2014-10-05 5 views
16

В настоящее время я играю с fish shell, и у меня возникают некоторые проблемы, обертывающие мою голову вокруг того, как установлена ​​переменная PATH. Для чего это стоит, я также использую oh-my-fish.Изменение PATH с рыбным снарядом

Если я эхо мой текущий путь я получаю:

➜ fish echo $PATH 
/usr/local/bin /usr/bin /bin /usr/sbin /sbin /usr/local/bin /opt/X11/bin /usr/texbin /Users/myname/.opam/system/bin 

Глядя на ~/.config/fish/config.fish я вижу следующую строку

set PATH /usr/local/bin $PATH /Users/myname/.opam/system/bin 

Мой вопрос заключается в (и это выражение, вероятно, отражают мое отсутствие знаний о субъект): до обработки config.fish, где находится набор переменных PATH? т.е.: где все пути между /usr/local/bin и /Users/myname/.opam/system/bin?

+0

документация описывает файлы инициализации: http://fishshell.com/docs/current/index.html#initialization –

+1

А. Я попытался найти второй файл ('' '/ etc/fish/config.fish''') и не смог его найти. Я подозревал, что это потому, что я установил рыбу с доморощенным. Я запустил '' 'find/-name config.fish''', чтобы найти все' '' config.fish''' файлы в моей системе. В результате получилось: '' '/ Пользователи/имя/.config/fish/config.fish''', ' ''/Пользователи/имя/.oh-my-fish/templates/config.fish''' , '' '/ usr/local/Cellar/fish/2.1.0/etc/fish/config.fish''', ' '' /usr/local/Cellar/fish/2.1.0/share/fish/ config.fish''' и '' '/ usr/local/etc/fish/config.fish'''. Я проверил все результаты, и ни один из них не указал значение PATH. –

ответ

31

Эта команда:

set -U fish_user_paths /usr/local/bin $fish_user_paths 

Это добавит /usr/local/bin постоянно на вашем пути.

+3

Не добавляйте это в свой файл fish_config! Он должен выполняться как команда. – Nishant

4

Как и во всех оболочках, рыба наследует свой PATH из среды, в которой она запущена. Как это установить для оболочек входа, отличается от операционной системы - в Linux, например, /etc/login.defs управляет исходным набором PATH для всех оболочек входа. Я не знаю, как это устанавливается на OS X.

Далее, как и bash или csh, файлы инициализации оболочки могут изменять путь. Для рыбы в OS X есть код в share/fish/config.fish для загрузки путей из стандартных файлов конфигурации пути OS X /etc/paths и /etc/paths.d/*. Существует альтернативный код для установки полезного пути на Solaris.

Существует также код для получения путей от универсальной переменной $fish_user_paths, которая является right way to add something to your PATH and have it reflected across all shells.

Смежные вопросы