Почему $ является символом по умолчанию для пользовательской оболочки и # символом по умолчанию для корневой оболочки?
10
При работе со стандартной оболочкой bash на сервере приглашение PS1 по умолчанию заканчивается на $ для пользователей без полномочий root и # для root.
IE:
ubuntu@server:~$ sudo su
root@server:/home/ubuntu#
Исторически исходная оболочка / bin / sh Bourne использовалась бы $как обычная подсказка и #как подсказка пользователя root (и csh использовала бы %). Это позволило довольно легко определить, работаете ли вы как суперпользователь или нет.
# также является символом комментария, поэтому любой, кто вслепую повторно вводит данные, не будет запускать какие-либо реальные команды.
Более современные оболочки (например, ksh, bash) продолжают это различие, $и #хотя это менее важно, когда вы можете установить более сложные значения, такие как имя пользователя, имя хоста, каталог :-)
Эта переменная используется для интерактивных подсказок. Исторически «суперпользователь» имел приглашение «#». Поскольку привилегии не обязательно должны быть монолитными, трудно определить, какие привилегии должны вызывать альтернативное приглашение. Тем не менее, достаточно мощный пользователь должен напомнить об этой возможности, имея альтернативную подсказку.
Смотрите также этот ответ практически на тот же вопрос на форуме SuperUser.
Чтобы добавить, это может быть найдено в Обосновании> C. Обоснование для Shell & Utilities> 2. Shell Command Language; Мне просто нужно было найти ссылку на него для чего-то другого :)
forquare
1
@forquare Спасибо. Я добавил правильную ссылку сейчас.
Ответы:
Исторически исходная оболочка / bin / sh Bourne использовалась бы
$
как обычная подсказка и#
как подсказка пользователя root (и csh использовала бы%
). Это позволило довольно легко определить, работаете ли вы как суперпользователь или нет.#
также является символом комментария, поэтому любой, кто вслепую повторно вводит данные, не будет запускать какие-либо реальные команды.Более современные оболочки (например, ksh, bash) продолжают это различие,
$
и#
хотя это менее важно, когда вы можете установить более сложные значения, такие как имя пользователя, имя хоста, каталог :-)источник
#
символ комментария мешает кому-то выполнять настоящие команды, если они вводят данные вслепую?# reboot
- ответьте ... ничего, потому что#
это комментарий.Традиция.
Стандарт POSIX говорит (мой акцент):
Смотрите также этот ответ практически на тот же вопрос на форуме SuperUser.
источник