Как отобразить текущий путь в командной строке в sh linux (не bash)?

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

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

и

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

in /etc/profile.

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

35
задан mpy 2013-05-29 13:56:16
источник

5 ответов

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

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

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

57
отвечен mpy 2014-07-30 21:16:37
источник
sh-4.2$ export PS1="\[email protected]\h:\w>"
[email protected]:~>cd /usr/local
[email protected]:/usr/local>
10
отвечен Jenny D 2013-05-29 14:07:44
источник

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

export PS1="\[email protected]\h: \W:$"

здесь

\u = имя пользователя

\ч = имя

\W имя данной папки (не полный путь)

2
отвечен rangsiman 2017-06-25 08:27:44
источник

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

set PS1="$(pwd)" 

задает запрос в рабочий каталог как команды set.

set PS1="$(pwd)" 

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

тест / понять это, выполнив:

echo $PS1

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

1
отвечен MaasSql 2014-10-27 17:49:59
источник

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

экспорт PS1= ' $(whoami)@${имя хоста%%.* } [$(pwd)]# '

1
отвечен Milan 2015-10-21 15:39:10
источник

Другие вопросы linux shell sh busybox

X