Допустим, я открыл терминал и ввел / выполнил некоторые команды оболочки.
Но я не вызывал явно Bash или любую другую оболочку.
Какая оболочка использовалась по умолчанию?
Допустим, я открыл терминал и ввел / выполнил некоторые команды оболочки.
Но я не вызывал явно Bash или любую другую оболочку.
Какая оболочка использовалась по умолчанию?
Ответы:
Тот, который указан в вашей строке /etc/passwd
(это :
отдельная строка, а оболочка является последней).
Например мой:
chris:x:1000:1000:Chris,,,:/home/chris:/bin/bash
Вот оно /bin/bash
(Ubuntu по умолчанию)
Вы также можете использовать chsh
:
$ chsh
Password:
Changing the login shell for chris
Enter the new value, or press ENTER for the default
Login Shell [/bin/bash]:
Это говорит мне о том, что моя оболочка есть, /bin/bash
и позволяет мне ее изменить.
Наконец, echo $SHELL
сделаем то же самое:
$ echo $SHELL
/bin/bash
sudo netstat -an | grep LISTEN | grep -v ^unix
. Я не вижу смысла заключать это в подоболочку bash.
sudo bash -c "..."
будет гарантировать, что весь канал выполняется корнем.
commandA | sudo commandB | commandC
, вы можете сделать sudo id
первый (запускает id
команду как root
, но также получает токен « использовать sudo без запроса пароля », который длится (по умолчанию) 15 минут.
chsh
то вы должны выйти и снова войти, чтобы увидеть это изменение.
набрав следующее, вы увидите, в какой оболочке открыт терминал:
echo $SHELL
Однако, чтобы узнать, в какой оболочке вы сейчас находитесь (возможно, вы ее изменили), наберите
ps -p $$
например, вы увидите, что оболочка bash в примере вывода
PID TTY TIME CMD
3500 pts/0 00:00:01 bash
Другой метод заключается в использовании
echo $0
это просто вернет имя текущей оболочки.
echo $0
По умолчанию это bash:
env | grep ^SHELL=
В большинстве случаев будет производить
SHELL=/bin/bash
useradd
, по умолчанию sh
. $ useradd -D|grep SHELL
SHELL=/bin/sh
,
Чтобы получить путь к файлу текущего исполняемого файла оболочки, можно использовать
readlink -f /proc/$$/exe
Некоторые возможные выходы:
/bin/bash
/usr/bin/bash
/usr/bin/zsh
/home/stan/.linuxbrew/Cellar/zsh/5.2/bin/zsh