Как навсегда удалить путь из рыбы $PATH?

Этот вопрос уже задавали, и ответ здесь: https://superuser.com/a/940041/293429

Однако предоставленное решение: выполнение set -e PATH[<index-of-the-path-to-be-removed] применяется только к работающему экземпляру и не является универсальным.

После выполнения этой команды, если кто-то выполнит echo $PATH, ранее удаленные пути появятся снова.

Один из способов полностью сбросить путь — выполнить: set -U fish_user_paths, но мне непонятно, что он делает.

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


person Kristof Pal    schedule 20.01.2016    source источник
comment
Для некоторых Информация. установка универсальной переменной fish_user_paths перестроит переменную PATH во всех сеансах yourfish.   -  person glenn jackman    schedule 21.01.2016
comment
@charles, нет, это не файл конфигурации рыбы. Они живут в ~/.config/fish   -  person glenn jackman    schedule 21.01.2016


Ответы (1)


Есть два способа сделать это, и какой из них допустим, зависит от того, как путь попал в $PATH.

Можно добавить каталоги в $PATH, например, через set PATH $PATH /some/dir. По крайней мере, по умолчанию PATH является глобальной переменной, что означает, что она предназначена для каждого сеанса. Это означает изменить что-то из $PATH, либо удалить его из того места, где он добавлен (что, вероятно, находится вне fish, поскольку он его наследует), либо поместить вызов set -e в ваш ~/.config/fish/config.fish, чтобы он выполняться при каждом запуске.

Существует также $fish_user_paths, которая является универсальной переменной (это означает, что она несет одно и то же значение в сеансах fish и синхронизируется между ними). При запуске и всякий раз, когда fish_user_paths изменяется, fish добавляет его в $PATH. Если здесь добавлен проблемный каталог, выполните set -e fish_user_paths[index] один раз (например, в интерактивном сеансе).

set -e fish_user_paths удалит всю переменную (в то время как set -U fish_user_paths очистит ее), что также будет работать, но также удалит все другие пути.

person faho    schedule 20.01.2016
comment
set -e fish_user_paths[index] подходит для моего случая. Спасибо @faho - person Kristof Pal; 21.01.2016