Я вошел в свой терминал маршрутизатора Edge через SSH. Как обычно после нескольких длинных команд, я набрал reset:

admin@ERX:~$ reset                                           
Incomplete command                               
admin@ERX:~$ reset -h                                                        
Invalid command
admin@ERX:~$ reset --help                                         
Invalid command                                      
admin@ERX:~$ reset help
Invalid command
admin@ERX:~$ which reset
/usr/bin/reset
admin@ERX:~$ clear
Incomplete command
admin@ERX:~$ which clear
/usr/bin/clear

Теперь я знаю, что пограничные маршрутизаторы поставляются в комплекте с определенным форком bash , а именно vbash (VyOS).

admin@ERX:~$ echo $SHELL
/bin/vbash

Я могу ввести всю команду (с путем) для сброса, но почему vbash не берет команды, если нет альтернативных определений?

admin@ERX:~$ vbash --version
GNU bash, version 4.1.0(2)-release (mipsel-unknown-linux-gnu)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

reset и clear быть переопределен? Если так, то почему which <command> не сообщает то же самое?


ОБНОВЛЕНИЕ 1

Выход PATH

admin@ERX:~$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

1 ответ1

1

Это похоже на то, что bash имеет псевдонимы, определенные для «reset» и «clear», которые используются, когда вы вызываете их без полного пути.

which является внешним инструментом, а не встроенным в bash, поэтому он не знает об псевдонимах.

Проверьте вывод alias если определены псевдонимы для «reset» и «clear».

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .