Нет никакой реальной разницы в поведении. Обе команды ничего не делают и выходят с успешным состоянием. :
подчеркивает выполнение ничего; true
подчеркивает успешное состояние.
strace true
работы, потому что true
и встроенная оболочка и внешняя команда (/bin/true
); :
только встроенная оболочка (существует нет /bin/:
- хотя мог быть и вероятно был в очень старых системах Unix). В ударе попробовать
type -a :
type -a true
Причины, что оба существуют, являются историческими. Если я вспоминаю правильно, некоторые очень ранние оболочки не имели синтаксиса комментария, таким образом, пустое :
команда использовалась вместо этого.
Существует некоторое внутреннее различие в dash
. Просмотр источника, доступного в git://git.kernel.org/pub/scm/utils/dash/dash.git, показывает некоторые различные пути выполнения кода в eval.c
, но я не смог произвести любое явно другое поведение кроме слова special
в выводе type :
.
Если бы это не, необходимо было бы связать glob-expand-word
к сочетанию клавиш. Обычно путем добавления чего-то как:
"\C-x*": glob-expand-word
кому: .inputrc
.
Для проверки текущего статуса выпускают что-то как:
bind -P | grep glob-expand-word
Где результат мог бы быть:
glob-expand-word can be found on "\C-x*".
Который означал бы:
Ctrl-x*
Это также наиболее вероятная работа:
Ctrl-xCtrl -*
Взгляните на bind -P
и руководство (руководства) для других тонкостей.
Кажется поиском завершения списка. В странице справочника для bash
:
COMP_TYPE
Set to an integer value corresponding to the type of completion
attempted that caused a completion function to be called: TAB,
for normal completion, ?, for listing completions after succes‐
sive tabs, !, for listing alternatives on partial word comple‐
tion, @, to list completions if the word is not unmodified, or
%, for menu completion. This variable is available only in
shell functions and external commands invoked by the program‐
mable completion facilities
Таким образом, это зависит от функции завершения для somecommand, как это завершается.
Если вы используете SET -O VI
в Bash, затем CTRL -X * не работает.
В SET -O VI
режим необходимо использовать ESC * вместо.