43

В настоящее время мой bash PS1 настроен на что-то вроде этого:

PS1="\[\`if [[ \$? = "0" ]]; then echo '\e[32m\h\e[0m'; else echo '\e[31m\h\e[0m' ; fi\`:\w\n\$ "

Как я могу сделать так, чтобы он показывал абсолютный путь вместо относительного (например, /home/dave/dir вместо ~/dir)?

5 ответов5

44

Просто замените \w на переменную окружения PWD:

PS1="\[\`if [[ \$? = "0" ]]; then echo '\e[32m\h\e[0m'; else echo '\e[31m\h\e[0m' ; fi\`:\$PWD\n\$ "

В любом случае, если вы возражаете против небольшого совета, я бы написал что-то вроде:

PS1='\[`[ $? = 0 ] && X=2 || X=1; tput setaf $X`\]\h\[`tput sgr0`\]:$PWD\n\$ '
21

Положите в вашем доме .bashrc

PS1='\u@\h:\w\$ '
0

Humm ~/dir - это абсолютный путь, но с использованием "ярлыка". Например, если вы выполните команду cd /usr/local ваша подсказка, скорее всего, покажет полный путь к /usr /local. Так или иначе, у вас уже есть полный путь :-)

Но, вероятно, ваш правильный вопрос, как отобразить полный путь без каких-либо ярлыков, таких как ~?

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

0

в PS1 Баш; -W должен быть относительным, а -w абсолютным, поэтому в приведенном выше у вас уже должен быть абсолютный ?!

http://wiki.archlinux.org/index.php/Color_Bash_Prompt

-1

Запустите pwd вместо использования \W

Простая версия:

export PS1="\`pwd\` $ "

Используя это в вашем коде:

export PS1="\[\`if [[ \$? = "0" ]]; then echo '\e[32m\h\e[0m'; else echo '\e[31m\h\e[0m' ; fi\`:\`pwd\`\n\$ "

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