Как добавить экспорт в рыбу, как в .bashrc?

50

Я просто хотел иметь возможность добавить в некоторый файл конфигурации рыбы (не знаю, где и где) ту же функцию, что и эта:

export PERL5LIB=/home/iaco/workspace/perl:/home/iaco/devtools

Эта строка была добавлена ​​в файл .bashrc, и она могла экспортировать переменную каждый раз, когда я открывал терминал.

Есть ли что-то подобное для рыбы? Я знаю, что я могу экспортировать переменные в рыбу, используя команду «set», но я хочу изменить один файл (не знаю, какой), чтобы автоматически добавлять эти переменные каждый раз, когда я открываю рыбный терминал.

Спасибо за ваше время!

Хорхе Кастро
источник

Ответы:

50

Вы можете поместить пользовательскую конфигурацию рыбы, включая директивы set, в ~/.config/fish/config.fish. Содержание должно выглядеть примерно так

set -x PERL5LIB /home/iaco/workspace/perl:/home/iaco/devtools

Более подробную информацию можно найти в документации .

Адам Быртек
источник
Спасибо Адам. Основная цель этого изменения - включить в Perl @inc путь к моим локальным библиотекам. После добавления предложенной вами строки экспорт был выполнен правильно! Но если я запущу perl -V, я не увижу новые пути. Я знаю, что это скорее вопрос Perl, чем вопрос рыбы, но я просто хотел узнать, есть ли у вас (или кто-то еще) идея
Я должен был упомянуть -xфлаг. Я только что обновил ответ, и вы можете узнать больше об этом в разделе «Экспорт переменных» в документации.
Адам Быртек
1
Основной сайт рыбы не работает, но документация с форка рыбы находится по адресу ridiculousfish.com/shell/user_doc/html/commands.html#set (я предполагаю, что это то же самое).
Даниэль Джеймс
Есть ли у рыбы доступ к переменным среды, таким как $ PATH?
Грант
@grant yes и $PATHт. д. можно использовать в fish, в том числе в config.fish.
Scribblemacher
19

Используйте универсальные переменные, введенные в рыбе 2.0.0. -xозначает экспорт и -Uозначает, что он объявлен для каждой рыбной сессии. Вы также можете использовать длинные параметры --exportи --universal.

set -xU PERL5LIB /home/iaco/workspace/perl:/home/iaco/devtools

Обратите внимание, что PATHпеременная - это особый случай. Хотя это PATHможет быть изменено повсеместно, это повлияет на текущую переменную PATH (что может быть небольшой проблемой, если операционная система введет дополнительный путь). Для PATHпеременной используйте fish_user_pathsпеременную (которая только добавляет пути). Переменная является массивом, что означает, что вам не нужно вводить :символы.

set -U fish_user_paths /home/iaco/workspace/perl/share/bin /home/iaco/bin $fish_user_paths
Конрад Боровски
источник
Да ты прав!
Nishant