39

Я хотел бы отобразить текущий путь в приглашении sh (не в оболочке bash), который в настоящее время просто показывает "#", я попытался представить это

env PS1="$(whoami)@$(hostname):$(pwd)"

а также

set PS1="$(whoami)@$(hostname):$(pwd)"

в /etc/profile .

Но, как очевидно, это не обновляется, когда изменяется каталог или пользователь. Пожалуйста, предложите способ сделать это динамичным.

6 ответов6

66

Команды подстановки в двойных кавычках " раскрываются сразу. Это не то, что вы хотите для вашего приглашения. Одинарные кавычки ' сохранят замены в $PS1 которые затем расширяются только при отображении приглашения. Следовательно это должно работать:

export PS1='$(whoami)@$(hostname):$(pwd)'

Если вам нужен обычный знак доллара и пробел в конце вашего приглашения, просто добавьте $ в конце (экранирование не требуется): export PS1='$(whoami)@$(hostname):$(pwd)$ '

12
sh-4.2$ export PS1="\u@\h:\w>"
jenny@serenity:~>cd /usr/local
jenny@serenity:/usr/local>
4

Эта команда работает для меня.

export PS1="\u@\h: \W:$"

куда
\u = имя пользователя
\h = имя хоста
\W Имя текущей папки (не полный путь)

1

Одним из ответов было использование одинарных кавычек вместо двойных, однако это не совсем правильный ответ. Что вы действительно хотите сделать, так это отложить оценку кода внутри вашего приглашения до его использования.

set PS1="$(pwd)" 

устанавливает приглашение в рабочий каталог с помощью команды set.

set PS1="\$(pwd)" 

НЕ расширяет $(pwd). Вместо этого для PS1 установлено буквальное значение $(pwd).

Протестируйте / поймите это, запустив:

echo $PS1

, Если вы видите строку: $ pwd, ваш запрос работает. Если вы видите буквальный путь, приглашение не работает, поскольку оно статически установлено

1

Используйте команду ниже, чтобы установить, как в cpanel.

экспорт PS1='$(whoami)@$ndomHOSTNAME%%.*} [$(pwd)] # '

0

Можно подумать о том, чтобы подтянуть подсказку, добавив несколько цветов. Например:

export PS1='\[\e[0;36m\]\u\[\e[0m\]@\[\e[0;33m\]\h\[\e[0m\]:\[\e[0;35m\]\w\[\e[0m\]\$ '

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .