Используя источник в скрипте bash
Я установил часть своего кода, которому нужен Perl 5.010, на сервер CentOS 5.x, используя perlbrew, и ему нужны две строки
source ~/perl5/perlbrew/etc/bashrc
а также
perlbrew switch perl-5.10.1
Быть выполненным в оболочке до того, как в моем / usr / bin / env появится perl 5.010, поэтому я попытался создать следующий исполняемый скрипт bash, чтобы минимизировать эти два шага. ./setEnv.sh
#!/bin/bash
echo "**setting environment variables - 'perlbrew switch-off' to exit"
SETSOURCE= `source ~/perl5/perlbrew/etc/bashrc`
echo $SETSOURCE
SETPERL= `perlbrew switch perl-5.10.1`
echo $SETPERL
2 ответа
Процесс не может изменить свою родительскую среду, так что вы делаете это неправильно, начиная с Шебанга.
Создание источника в обратном токе (подоболочке) влияет только на подоболочку и заканчивается после выполнения команды.
$ ### test.sh assign "inside" to TEST
$ TEST='outside'; echo "$(source test.sh; echo $TEST)" - $TEST
inside - outside
Что вы, вероятно, хотите сделать, это источник вашего setEnv.sh
Сценарий прямо из вашей оболочки.
$ ### test.sh assign "inside" to TEST
$ TEST='outside'; source test.sh; echo $TEST
inside
Использовать source
Команда без галочек. Просто напишите строку
source ~/perl5/perlbrew/etc/bashrc
в вашем сценарии. (source
имеет побочные эффекты, которые не работают, когда вы находитесь в под-оболочке. Я даже не уверен, что ты можешь бежать source
как внешняя команда.)