Разница между $0 и $SHELL?

Возможно, вы захотите перезапустить службу rsyslog после ее обновления с помощью фильтров, если вы еще этого не сделали.

Перезапустите службу rsyslog после обновления файла rsyslog.conf.

# service rsyslog restart        # CentOS/RHEL 6
# systemctl restart rsyslog
0
16.09.2021, 19:29
1 ответ

$SHELL— забавная переменная. Для большинства оболочек он содержит имя вашей оболочки входа в систему (, которую вы видите в /etc/passwd ). Он не меняется автоматически, если вы запускаете другой интерпретатор оболочки.

Например, моя оболочка входа — fish. Давайте посмотрим, что разные оболочки делают с$SHELL:

$ set -e SHELL; bash -c 'echo $SHELL'
/usr/local/bin/fish
$ set -e SHELL; ksh -c 'echo $SHELL'
/bin/sh
$ set -e SHELL; zsh -c 'echo $SHELL'

$ set -e SHELL; dash -c 'echo $SHELL'

$ set -e SHELL; fish -c 'echo $SHELL'

set -e var— это способ, которым рыба сбрасывает переменную.

  • bash устанавливает SHELL в качестве оболочки входа в систему.
  • ksh использует оболочку по умолчанию.
  • zsh, dash и fish не придают SHELL особого значения.

Таким образом, $SHELLв лучшем случае просто информативен . Я бы не стал полагаться на то, что он имеет какую-то магическую ценность.


Значение SHELL фактически устанавливается login, перед вызовом оболочки. Из руководства (BSD)loginна моем Mac:

The login utility enters information into the environment (see environ(7)) specifying the user's home directory (HOME), command interpreter (SHELL), search path (PATH), terminal type (TERM) and user name (both LOGNAME and USER).

1
16.09.2021, 19:52

Теги

Похожие вопросы