Возможно ли иметь переменные среды в пути к рабочему каталогу: PS1?
Я на Lubuntu, и я использую Bash. Мой PS1 (в.bashrc) это:
PS1="\w> "
Мне это нравится, потому что мне нужно постоянно вставлять рабочий каталог. Проблема в том, что путь всегда очень длинный, и так как я использую терминатор, у меня есть только половина ширины моего экрана, доступная для его отображения... это уродливо и раздражает. Моя командная строка выглядит так:
/this/is/a/very/long/path/that/i/want/to/make/shorter >
Я хотел бы установить в моей среде переменные:
$tiavl=/this/is/a/very/long
И тогда я получу:
$tiavl/path/that/i/want/to/make/shorter >
Цель состоит в том, чтобы сделать что-то более короткое в командной строке, но я все еще хочу иметь возможность скопировать, вставить это и сделать:
cd $tiavl/path/that/i/want/to/make/shorter
Это немного похоже на $HOME:
~/path/that/i/want/to/make/shorter >
Я знаю, где я, и я могу скопировать вставить ~.
Благодарю.
3 ответа
Вы можете сделать это с помощью небольшой вспомогательной функции, как показано ниже (используйте /home
в качестве примера префикс пути):
~ > pwd
/home/me
~ > tiavl=/home
~ > prompt_path () { echo ${1/#$tiavl/\$tiavl}; }
~ > export PS1="\$(prompt_path \w) > "
$tiavl/me >
Это использует простую функцию манипуляции со строками (см. Здесь много примеров) в функции, чтобы заменить начальную часть пути литералом $tiavl
если это соответствует.
Вот демонстрация того, как обновить эту функцию для нескольких путей.
#! /bin/sh
path1=/home
path2=/usr
path3=/var
prompt_path() {
local path
path="${1/#$path1/\$path1}"
path="${path/#$path2/\$path2}"
path="${path/#$path3/\$path3}"
echo "$path"
}
prompt_path $HOME
prompt_path /usr/local
prompt_path /var/tmp
Если вы копируете вставить в терминал, вы можете просто использовать переменную окружения $PWD, которая всегда будет показывать вам рабочий каталог.
echo $PWD
показывает рабочий каталог.
В общем, вы делаете скрипт bash:
prompt_path
который содержит:
#! /bin/sh
path="${1/#$path1/\$path1}"
path="${path/#$path2/\$path2}"
path="${path/#$path3/\$path3}"
echo "$path"
Вы помещаете это в папку как:
~/.local/bin
Вы даете х право на ваш скрипт:
chmod u+x prompt_path
В вашем ~ /.bashrc:
1 - вы меняете PS1 на:
PS1="\$(prompt_path \w) > "
2 - вы добавляете эти строки:
export path1=/home
export path2=/usr
export path3=/var
3 - вы указываете, что вы можете вызвать свой скрипт из любой точки мира:
export PATH=~/.local/bin:$PATH
Наконец, вы получаете ваш.bashrc:
. ~/.bashrc