В настоящее время мой 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
)?
/home/dave/dir
и~/dir
оба являются абсолютными путями, второй использует аббревиатуру для вашего домашнего каталога. Относительный путь - это путь относительно вашего текущего каталога (например../dir
), а не от root (/
).\u@\H[\w]:~\$
делаетuser@host[~/path]:~$
Ответы:
Просто замените
\w
на\$PWD
:В любом случае, если вы возражаете против небольшого совета, я бы написал что-то вроде:
источник
$PWD
оценивается во время назначенияPS1
, а не при каждом вызове. Однако , если вы избежите знака доллара, это сработает\$PWD
. При этом знак доллара является знаком доллара во время назначения, и оценка переменной происходит в каждом приглашении. +1 тебе.Положить в свой дом
.bashrc
источник
\w
дает полный путь, в то время как\W
дает только каталог. Смотрите "Последовательности побега Bash Prompt"в PS1 Баш; -W должен быть относительным, а -w абсолютным, поэтому в приведенном выше у вас уже должен быть абсолютный ?!
http://wiki.archlinux.org/index.php/Color_Bash_Prompt
источник
W
показывает только текущее имя каталога,w
показывает полный путь, но все еще использует относительные пути.Humm ~ / dir - это абсолютный путь, но с использованием «ярлыка». Например, если вы сделаете
cd /usr/local
это, скорее всего будет отображаться полный путь к / usr / local. Так или иначе, у вас уже есть полный путь :-)Но, вероятно, ваш правильный вопрос, как отобразить полный путь без каких-либо ярлыков, таких как ~?
Тем не менее, я не знаю ответа на этот вопрос и, глядя на мужчину, кажется, он есть (по крайней мере, задокументировано).
источник
Запустите
pwd
вместо использования\W
.Простая версия:
Используя это в вашем коде:
источник