Настроить zsh, подскажите для обычного / суперпользователя? - PullRequest
1 голос
/ 12 ноября 2019

Как я могу заставить оболочку zsh использовать "$ and #" для "normal and superuser" вместо "% and #"?

Ответы [ 3 ]

0 голосов
/ 14 ноября 2019

Проверка EUID (эффективный идентификатор пользователя) в ~/.zshrc:

if [[ $EUID == 0 ]]; then
    PROMPT='# '
else
    PROMPT='$ '
fi
0 голосов
/ 18 ноября 2019

Добавление следующего к ~/.zshrc помогло мне:

PROMPT='%(!.#.$) '

Это ставит # для корня и $ для других.

0 голосов
/ 12 ноября 2019

Удаленный в настоящий момент самоответ верен, насколько это возможно. В приглашении %(!.#.$) расширится до #, если эффективный идентификатор пользователя оболочки равен 0, в противном случае $.

Однако учтите, что если текущее приглашение имеет значение, подобное PS1='%(!.#.$) 'просто запуск привилегированной оболочки может не сохранить текущее значение PS1, даже если он был экспортирован. Например, в macOS файл по умолчанию /etc/zshrc явно устанавливает значение PS1, отбрасывая любое значение, которое вы ожидаете "унаследовать".

При этом я бы рекомендовал не использовать $ в приглашении, так как он тесно связан с потомками оболочки Bourne, которые не слишком сильно отличаются от стандартного интерактивного поведения. zsh предоставляет большое количество функций, разработанных явно для (и противоречащих стандартному) интерактивного использования, поэтому приглашение % обеспечивает хорошее напоминание об этом.

...