почему да sh перед zsh (- zsh), если я отображаю $ 0 в zsh? - PullRequest
2 голосов
/ 24 февраля 2020

Если в bash я (из командной строки)

echo $0

вывод

bash

и аналогично в других оболочках.

Но если я сделаю то же самое в zsh, то получится

-zsh

Почему это да sh перед zsh?

1 Ответ

2 голосов
/ 24 февраля 2020

Старое соглашение между оболочками заключается в том, что если оболочка вызывается с использованием имени, начинающегося с -, она должна инициализироваться как оболочка входа в систему. Ваш эмулятор терминала следует этому соглашению, когда он выполняет для вас zsh.

Вы можете наблюдать это, используя флаг -l для встроенного zsh exec (который добавляет начальный - к названию команды).

% ( exec bash -c 'echo $0')
bash
% ( exec -l bash -c 'echo $0')
-bash

Эффект ведущего - обычно эквивалентен запуску оболочки с опцией -l.

...