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

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

IE:

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

Почему это?

2 Solutions collect form web for “Почему $ является символом по умолчанию для оболочки пользователя и # символом по умолчанию для корневой оболочки?”

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

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

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

Традиция.

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

PS1

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

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

  • Удаление пространства в начале переменных данных
  • Как проверить, перезагрузится ли мой компьютер (или завершение работы)?
  • Сценарии IBM V7000 для мониторинга
  • Опишите подсказку, которую я вижу, когда я впервые зашел на компьютер Linux
  • Код выхода сценария оболочки и ведение журнала
  • сценарий оболочки, отредактированный в окнах, отображает сообщение об ошибке
  • Новая строка в переменных bash
  • Не удалось получить команду для работы с bash -c
  • Лучше использовать !! или история?
  • Пока цикл не будет закрыт
  • Передача аргументов с кавычками и двойными значениями в сценарий bash
  • Interesting Posts

    Как я могу предотвратить закрытие SSH-сервера сервером для пользователя с оболочкой nologin?

    сценарий оболочки для получения размера пикселя изображения

    использование максимальной памяти памяти из журнала

    Возможно ли синхронизация с Linux и Azure AD?

    lofiadm: пароль через скрипт

    chroot: не удалось запустить команду '/ bin / bash': нет такого файла или каталога

    Отфильтруйте гиперссылки с веб-страницы и загрузите все, что соответствует определенному шаблону

    Что делает мой курсор «случайным образом» исчезающим при использовании gnome-teminal?

    соединение debian wifi продолжает снижаться и

    Как защитить ваш DHCPD от атаки starvaton от dhcp? (option82)

    Как переименовать файлы, используя комбинацию циклов в bash?

    Что такое kswapd_low_wmark_hit_quickly из / proc / vmstat

    Backports на Debian не работает

    grep -f patternfile не находит ничего или слишком сильно в зависимости от содержимого шаблона

    Цикл через двоичные фрагменты данных из stdin в Bash

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