在 bash 脚本中使用源代码



我已经在使用perlbrew的CentOS 5.x服务器上安装了一些需要Perl 5.010的代码,它需要两行

source ~/perl5/perlbrew/etc/bashrc

perlbrew switch perl-5.10.1

在我的/usr/bin/env 中有 perl 5.010 之前在 shell 中执行,所以我尝试创建以下可执行 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

进程无法修改其父环境,因此自 shebang 以来您就做错了。

在反引号(子外壳)中执行源仅影响子外壳,并在命令执行后结束。

    $ ### test.sh assign "inside" to TEST
    $ TEST='outside'; echo "$(source test.sh; echo $TEST)" - $TEST
    inside - outside

您可能想做的是直接从 shell 获取setEnv.sh脚本。

    $ ### test.sh assign "inside" to TEST
    $ TEST='outside'; source test.sh; echo $TEST 
    inside

使用不带反引号的 source 命令。只需写一行

source ~/perl5/perlbrew/etc/bashrc

在您的脚本中。(source有副作用,当你在子外壳中时,这不起作用。我什至不确定您是否可以将source作为外部命令运行。

相关内容

  • 没有找到相关文章

最新更新