1

perlbrew を使用して CentOS 5.x サーバーに Perl 5.010 を必要とするコードの一部をインストールしましたが、2 行が必要です。

source ~/perl5/perlbrew/etc/bashrc

perlbrew switch perl-5.10.1

/usr/bin/env に perl 5.010 をインストールする前にシェルで実行する必要があるため、次の実行可能な bash スクリプトを作成して、これらの 2 つの手順を最小限に抑えようとしました。./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
4

2 に答える 2

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
于 2012-06-06T12:07:51.143 に答える
0

sourceバッククォートなしでコマンドを使用します。一行書くだけ

source ~/perl5/perlbrew/etc/bashrc

あなたのスクリプトで。(sourceサブシェルにいるときは機能しない副作用がありますsource。外部コマンドとして実行できるかどうかさえわかりません。)

于 2012-06-06T11:28:07.320 に答える