10

現在のスコープ外で使用できる Bash スクリプトからシステム環境変数を設定する必要があります。したがって、通常は次のように環境変数をエクスポートします。

export MY_VAR=/opt/my_var

ただし、システムレベルで環境変数を使用できるようにする必要があります。これは可能ですか?

4

4 に答える 4

13

そうではありません-サブプロセスで実行すると、親に影響を与えることはできません。

2 つの可能性があります。

  1. スクリプトを実行するのではなく、ソースから取得します ( source .を参照):

    source {script}
    
  2. スクリプトにエクスポート コマンドを出力させ、次のことを評価します。

    eval `bash {script}`
    

    または:

    eval "$(bash script.sh)"
    
于 2008-11-20T22:37:57.207 に答える
6

これは、私が知っている唯一の方法です。

foo.sh には、次のものがあります。

#!/bin/bash
echo MYVAR=abc123

そして、変数の値を取得したい場合は、次のことを行う必要があります。

$ eval "$(foo.sh)"  # assuming foo.sh is in your $PATH
$ echo $MYVAR #==> abc123

やりたいことややりたい方法によっては、ソースの使用に関するDouglas Leeder の提案を使用できますが、ファイル全体、関数、およびすべてをソースします。eval を使用すると、エコーされるものだけが評価されます。

于 2008-11-20T22:55:01.823 に答える
1

ファイル/etc/ profileに変数を設定します(必要に応じてファイルを作成します)。これにより、基本的にすべてのBashプロセスで変数を使用できるようになります。

于 2008-11-21T00:29:47.217 に答える