Bashで環境変数を作成する場合は、SPORT = baseballと言ってからtcshに切り替えて「running」に変更します。 bashに戻すと、SPORTは「実行中」と表示されますか? (自分で試してみたいのですが、bashだけです)
ベストアンサー1
以下は、あなたが要求した操作を正確に実行し、bash
環境変数を設定してから、tcsh
その値を開始して変更する実際の実験です。次に、の値を確認してくださいbash
。
#!/bin/bash
export SPORT=baseball
printf 'SPORT is "%s"\n' "$SPORT"
tcsh -c 'echo $SPORT; setenv SPORT archery; echo $SPORT'
printf 'SPORT is "%s"\n' "$SPORT"
このbash
スクリプトを実行すると、呼び出しのtcsh
結果は次のようになります。
SPORT is "baseball"
baseball
archery
SPORT is "baseball"
tcsh
しかし、これが実際に動作することを見るために切り替える必要さえありません。(...)
スクリプトbash
に別々の環境を持つサブシェルを導入するだけで十分です。
#!/bin/bash
export SPORT=baseball
printf 'SPORT is "%s"\n' "$SPORT"
(
echo "$SPORT"
export SPORT=archery
echo "$SPORT"
)
printf 'SPORT is "%s"\n' "$SPORT"
出力は変更されません。
ある環境は他の環境に影響を与えることはできません。しかし、1つの例外があります。: 新しい環境は親環境の環境変数を継承します。前の例のようなサブシェルも、エクスポートされていないシェル変数を継承します。