Я хотел бы отобразить текущий путь в приглашении sh (не в оболочке bash), который в настоящее время просто показывает "#", я попытался с введением этого
env PS1="$(whoami)@$(hostname):$(pwd)"
а также
set PS1="$(whoami)@$(hostname):$(pwd)"
в /etc/profile
.
Но, как очевидно, это не обновляется, когда изменяется каталог или пользователь. Пожалуйста, предложите способ сделать это динамичным.
$()
запускает отдельную программу; было бы быстрее использовать переменные окружения, такие как$LOGNAME
,$HOSTNAME
и$PWD
вместо.Ответы:
Подстановки команд в двойных кавычках
"
раскрываются немедленно. Это не то, что вы хотите для вашего приглашения. Одинарные кавычки'
сохранят замены, в$PS1
которых они будут расширены только при отображении подсказки. Следовательно это должно работать:Если вам нужен обычный знак доллара и пробел в конце вашего приглашения, просто добавьте
$
в конце (экранирование не требуется):export PS1='$(whoami)@$(hostname):$(pwd)$ '
источник
export PS1='$(whoami)@$(hostname):$(pwd)$'
я сохранил изменения в/etc/profile
. Спасибо.set
работал для меня (но у меня не было родногоsh
). Но я изменю это,export
чтобы соответствовать вашей настройке./etc/profile
(см. Вопрос) или~/.profile
?!foo@localhost:/home/fools -la
при использованииls -la
.источник
\u@\h:\w>
качестве командной строкиBusyBox v1.19.4 built-in shell (ash)
.Эта команда работает для меня.
Где
\ u = имя пользователя
\ h = имя хоста
\ W Имя текущей папки (не полный путь)
источник
Можно подумать, чтобы подтолкнуть подсказку, добавив несколько цветов. Например:
источник
Одним из ответов было использование одинарных кавычек вместо двойных, однако это не совсем правильный ответ. Что вы действительно хотите сделать, так это отложить оценку кода внутри вашего приглашения до его использования.
устанавливает приглашение в рабочий каталог с помощью команды set.
НЕ расширяет $ (pwd). Вместо этого для PS1 установлено буквальное значение $ (pwd).
Протестируйте / поймите это, запустив:
, Если вы видите строку: $ pwd, ваш запрос работает. Если вы видите буквальный путь, приглашение не работает, поскольку оно статически установлено
источник
Используйте команду ниже, чтобы установить, как в cpanel.
экспорт PS1='$(whoami)@$ enjHOSTNAME%%.*} [$ (pwd)] # '
источник