Zsh подскажите с текущим рабочим каталогом

В bash мой PROMPT установлен так

PS1="$(scutil --get ComputerName) \W\\$ "

Где я вижу только имя компьютера и только имя текущего каталога, в котором я нахожусь, а не полный путь и знак $.

my-computer my-folder$

Мой вопрос заключается в том, как настроить приглашение zsh так же, как в bash. Я гуглил, но решения, которые я нашел, не совсем то, что я ищу.

4 ответа

Решение

Смотрите раздел РАСШИРЕНИЕ ПОСЛЕДОВАТЕЛЬНЫХ ПОСЛЕДОВАТЕЛЬНОСТЕЙ и ПРОСТЫХ ПОДСКАЗОК ESCAPES в zsh страница руководства на man zshmisc,

Эта строка подсказки, PS1='%m %1d$ ', отображает имя машины (%m) и завершающий компонент текущего пути (%1d).

Лучшая версия комбинаций, которая работает для меня, такова:

PS1='%n@%m %~$ '

%n — пользователь, вошедший в систему

%m — имя машины

%~ дает путь относительно HOME, если путь начинается с HOME.

Вот как это для меня:

На странице руководства есть дополнительная информация. Здесь я попытался выразиться проще.! :D

По моему мнению

      PS1='%~: '

где угодно в ~/.zshrc является самым чистым/простым.

      PS1='%~ $: '

тоже неплохо.

Чтобы показать только каталог, за которым следует знак, например:

      /usr/local%

Вставьте следующее~/.zshrc(создайте файл, если он не существует):

      PROMPT='%~%# '

%~отображает текущий каталог, но ваш домашний каталог будет заменен~:

      /usr/local% cd
~% pwd
/Users/7stud
% cd erlang_programs 
~/erlang_programs% pwd
/Users/7stud/erlang_programs
~/erlang_programs% cd /opt/local
/opt/local% 

Это делает подсказку короткой и приятной.

Документы говорят, что%#отобразит знак, но если вы используете привилегии, например, сsuкоманда, то она отобразит#знак. Когда я используюsudo, он по-прежнему отображает%знак.

Другие вопросы по тегам