#bash #perl #environment-variables
Вопрос:
По-моему .bashrc
, у меня есть
eval "$(perl -I$HOME/util/perl5/lib/perl5 -Mlocal::lib)"; export PERL5LIB=$HOME/util/perl5:$PERL5LIB
если после этого я сделаю
env | grep PERL5LIB
Я вижу
PERL5LIB=/home/myUser/util/perl5:/home/myUser/perl5/lib/perl5:
Почему второй путь неверен? Я бы ожидал, что
/home/myUser/util/perl5/lib/perl5
для добавления в PERL5LIB, а не
/home/myUser/perl5/lib/perl5
я что-то неправильно понимаю в переданной команде perl eval
? Вывод этой команды, выполняемой в командной строке (а не из .bashrc
), является
$ perl -I$HOME/util/perl5/lib/perl5 -Mlocal::lib Attempting to create directory /home/myUser/perl5 $
Комментарии:
1. Каков результат
perl -I$HOME/util/perl5/lib/perl5 -Mlocal::lib
?2. Единственное, к чему вы добавляете
PERL5LIB
, — это$HOME/util/perl5
Часть после этого-это то, что было раньше. Как вы думаете, почему он должен бытьutil
в нем?3. @Barмар, но прежде чем запустить эту строку, я сделаю
unset PERL5LIB
это просто для уверенности. Результат тот же самый4. @pretzlstyle: Это не вывод команды, которую я просил.
5. @choroba похоже, что так оно и есть. По крайней мере, это все, что относится к stdout. Отредактировано еще раз
Ответ №1:
Если вы не скажете иначе, local::lib использует ~/perl5.
Изменить
perl -I$HOME/util/perl5/lib/perl5 -Mlocal::lib
Для
perl -I$HOME/util/perl5/lib/perl5 -Mlocal::lib=$HOME/util/perl5
Комментарии:
1. успех! Спасибо. Использование здесь странное. документ-I aregument не сообщает о местонахождении
lib
? Хотя я вообще ничего не знаю о perl2. Он сообщает
perl
, где искать модули, такие как local::lib. Это не имеет ничего общего с local::lib или где local::lib сообщит Perl для поиска «локальной библиотеки». например Если вы установите local::lib в каталог, который уже ищет Perl,perl -Mlocal::lib=$HOME/util/perl5
будет достаточно.