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

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

IE:

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

Почему это?

  • Как напечатать «$» в документе здесь
  • Заменить текст / строку новой строкой
  • Почему не работал Ctrl-C?
  • Как иметь отдельную историю команд для разных сеансов для одного и того же пользователя?
  • Как выполнять последовательные команды из истории?
  • shell сохраняет ip-адрес, который вы ping?
  • Расширение расширения * в эхо
  • cp не работает в скрипте, но работает в терминале
  • 2 Solutions collect form web for “Почему $ является символом по умолчанию для оболочки пользователя и # символом по умолчанию для корневой оболочки?”

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

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

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

    Традиция.

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

    PS1

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

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

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