2013-05-29 09:56:16 +0000 2013-05-29 09:56:16 +0000
43
43
Advertisement

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

Advertisement

Я хотел бы отобразить текущий путь в sh prompt (не bash shell), который в настоящее время просто показывает “#”, я пытался с помощью

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

и

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

в /etc/profile.

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

Advertisement
Advertisement

Ответы (6)

77
77
77
2013-05-29 10:05:04 +0000

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

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

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

14
14
14
2013-05-29 10:07:44 +0000
sh-4.2$ export PS1="\u@\h:\w>"
jenny@serenity:~>cd /usr/local
jenny@serenity:/usr/local>
5
Advertisement
5
5
2017-06-25 05:27:44 +0000
Advertisement

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

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

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

3
3
3
2018-11-23 13:35:39 +0000

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

export PS1='\[\e[0;36m\]\u\[\e[0m\]@\[\e[0;33m\]\h\[\e[0m\]:\[\e[0;35m\]\w\[\e[0m\]\$ '
1
Advertisement
1
1
2015-10-21 12:29:41 +0000
Advertisement

Для установки используйте команду ниже, как в cpanel.

экспортируйте PS1=‘$(whoami)@${HOSTNAME%%.*}. [$(pwd)] # “

1
1
1
2014-10-27 14:49:59 +0000

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

set PS1="$(pwd)"

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

set PS1="\$(pwd)"

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

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

echo $PS1

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

Advertisement

Похожие вопросы

6
10
11
5
17
Advertisement
Advertisement