1. ホーム
  2. shell

[解決済み] 環境変数を設定するシェルスクリプト

2022-12-01 23:57:19

質問

変数のエクスポートを行うシェルスクリプトを書きたいのですが、どうすればよいでしょうか。

以下にスクリプトを列挙します。

echo "Perform Operation in su mode"
export ARCH=arm
echo "Export ARCH=arm Executed"
export PATH='/home/linux/Practise/linux-devkit/bin/:$PATH';
echo "Export path done"
export CROSS_COMPILE='/home/linux/Practise/linux-devkit/bin/arm-arago-linux-gnueabi-';
echo "Export CROSS_COMPILE done"

しかし、これは正しく動作しないようです。代わりにシェルプロンプトで個別にコマンドを実行しなければならないのです。

どのように解決するのですか?

スクリプトの他の部分を表示し、あなたが個別に実行しなければならなかったコマンドと、簡単に実行したいコマンドを教えてください。

また、変数の展開にはシングルクォートではなく、ダブルクォートを使用する必要があります。

export PATH="/home/linux/Practise/linux-devkit/bin/:$PATH"

一つのコマンドの末尾にあるセミコロンも不要です。

ここまでは

#!/bin/sh
echo "Perform Operation in su mode"
export ARCH=arm
echo "Export ARCH=arm Executed"
export PATH="/home/linux/Practise/linux-devkit/bin/:$PATH"
echo "Export path done"
export CROSS_COMPILE='/home/linux/Practise/linux-devkit/bin/arm-arago-linux-gnueabi-' ## What's next to -?
echo "Export CROSS_COMPILE done"
# continue your compilation commands here
...

については su で実行できます。

su -c 'sh /path/to/script.sh'


注意: OP は、シェル スクリプトを使用して対話型シェルでエクスポート変数を作成する方法についての手順を明確に求めてはいませんでした。 彼は、自分のスクリプトをせいぜい評価するよう求めただけです。 彼は、自分のスクリプトがどのように使用されるかの詳細については言及しませんでした。 それは . あるいは source を対話型シェルから実行しました。 スタンドアロンの scipt であったかもしれませんし、あるいは source を別のスクリプトから読み込んだのかもしれません。 環境変数は対話型シェルに特有のものではありません。 この回答で彼の問題は解決しました。