単一のシェルスクリプトで実行してエクスポートする方法

単一のシェルスクリプトで実行してエクスポートする方法

2つのシェルスクリプトがあります。

$ cat java_alternative_7
#!/bin/sh
sudo update-java-alternatives -s java-7-oracle

$ cat java_home_7
#!/bin/sh
export JAVA_HOME=/usr/lib/jvm/java-7-oracle

両方のファイルを実行/インポートできます。簡単です。

$ sh java_alternative_7
$ javac -version
javac 1.7.x_yy

$ source java_home_7
$ echo $JAVA_HOME
/usr/lib/jvm/java-7-oracle

これら2つのステップを同時に完了するにはどうすればよいですか?

ベストアンサー1

次のスクリプトをマージしたくない場合

#!/bin/sh

sudo \
    env JAVA_HOME=/usr/lib/jvm/java-7-oracle \
    update-java-alternatives -s java-7-oracle

使用できる

#!/bin/sh

sudo \
    env BASH_ENV=path/to/java_home_7 \
    bash -c 'update-java-alternatives -s java-7-oracle'

これにより、スクリプトがで始まるインラインスクリプトで実行されますupdate-java-alternatives。このユーティリティは、環境変数を設定するスクリプトのパス名で環境変数を設定します。これにより、スクリプトはユーティリティを呼び出す前に他のスクリプトのソースを自動的に取得します。bash -cenvsudoenvBASH_ENVJAVA_HOMEbash -cupdate-java-alternatives

環境変数設定を使用すると、環境が最初に消去されてenvも変数が設定されます。sudo

おすすめ記事