Почему $ является символом по умолчанию для оболочки пользователя и # символом по умолчанию для корневой оболочки?

При запуске стандартной оболочки bash на сервере приглашение PS1 по умолчанию заканчивается на $ для пользователей без полномочий root и # для root.

IE:

ubuntu@server:~$ sudo su root@server:/home/ubuntu# 

Почему это?

  • Генерировать случайные числа в определенном диапазоне
  • Как выбрать и вывести текст в строке
  • Скобка в команде echo shell
  • Можете ли вы изменить формат timestamp для команды history на tcsh
  • Разрешить setuid для сценариев оболочки
  • Поиск различного имени файла в цикле
  • Ожидает применения инструмента для платформы ARM
  • Вопрос возврата каретки
  • 2 Solutions collect form web for “Почему $ является символом по умолчанию для оболочки пользователя и # символом по умолчанию для корневой оболочки?”

    Исторически исходная оболочка / bin / sh Bourne будет использовать $ в качестве обычного приглашения и # для приглашения пользователя root (а csh будет использовать % ). Это сделало довольно простым рассказать, работаете ли вы как суперпользователь или нет.

    # также является символом комментария, поэтому любой, кто слепо повторяет ввод данных, не будет запускать какие-либо реальные команды.

    Более современные оболочки (например, ksh, bash) продолжают это различие в $ и # хотя это менее важно, когда вы можете установить более сложные значения, такие как имя пользователя, имя хоста, каталог 🙂

    Традиция.

    Стандарт POSIX говорит (мой акцент):

    PS1

    Эта переменная используется для интерактивных подсказок. Исторически «суперпользователь» имел подсказку «#». Поскольку привилегии не должны быть монолитными, трудно определить, какие привилегии должны вызывать альтернативное приглашение. Однако достаточно мощный пользователь должен напомнить об этой мощности, попросив альтернативную подсказку.

    См. Также этот ответ практически на тот же вопрос на форуме SuperUser.

    Linux и Unix - лучшая ОС в мире.