Я знаю, что это, вероятно, относительно бессмысленный вопрос, но мне любопытно, почему exec false
закрывает терминал так же, как это exit
делает.
Я также хотел бы знать, является ли это приемлемым способом закрыть терминал или нет.
command-line
dragonloverlord
источник
источник
Ответы:
exec false
заменяет текущую оболочку выполнением командыfalse
(здесь не встроенная оболочка, а/bin/false
какой-либоfalse
исполняемый файл, который находится первым вPATH
), который быстро завершается. Если оболочка была самым верхним процессом, запущенным в вашем эмуляторе терминала, то внутри него больше не было запущенных процессов, поэтому эмулятор терминала закрыт.Это приемлемый альтернативный способ закрыть терминал, как и многие другие похожие команды:
Смотрите также: что делает анекекд
источник
bash
перед выполнением вызова выполню определенную очистку,exec
включая запись команд в.bash_history
. Поэтому, если кто-то просто хочет сохранить.bash_history
и запустить новую оболочку в том же окне терминала, можно сделать это, набравexec bash
.exec
вызывает командыPATH
, а не встроенные. Например,exec [[ $USER = root ]]
вернетbash: exec: [[: not found
ошибку. В случае OPfalse
это называется is/bin/false
, а не встроенная оболочка. В противном случае хороший ответ, следовательно +1. В качестве примечания,exec
может быть своего рода командой обрезания, т. Е. Если бы эти три команды в вашем примере были превращены в сценарий, ничего кроме первого неexec
было бы достигнуто, потомуexec
что заменила бы оболочка, вызываемая сценарием, любой командой справа изexec
.