![Параметры в переменной bash $PS1](https://rvso.com/image/111989/%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B%20%D0%B2%20%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D0%BE%D0%B9%20bash%20%24PS1.png)
Между различными параметрами, которые могут быть включены в bash
PS1
переменную, \w
расширяется
текущий рабочий каталог, где $HOME сокращено с тильдой (использует значение переменной PROMPT_DIRTRIM)
как указано вРуководство по Башу.
My $HOME
установлен в /home/myuser/
(то же значение, что указано в /etc/passwd
), но расширение \w
в PS1
дает /home/myuser
когда я в $HOME
каталоге. Таким образом, он не «сокращен с тильдой».
Я использую Ubuntu 16.04 с GNU bash, version 4.3.48(1)-release (x86_64-pc-linux-gnu)
.
Что не так? Что это за источник, откуда \w
на самом деле копируется путь текущего каталога?
решение1
Завершающий /
в /home/myuser/
сбивает с толку bash. Я думаю, вы увидите нормальное поведение, если удалите его.
Этот слеш не является частью имени каталога; это разделитель пути. Он не должен быть в /etc/passwd
, и он не должен быть в $HOME
.
Вы можете проверить эту теорию, не прикасаясь к файлу, используя всего лишь:
HOME=/home/myuser
после чего в строке приглашения должна появиться тильда.