これが本当に必要な場合は実行できますが、注意が必要です。これを行う 1 つの方法は、awk を使用して正しい構文を出力し、awk から返されるテキストを評価することです。主要な sh および csh フレーバー間で単一の環境変数値ファイルを共有するには、ファイル内で次のコマンドを実行すると、変数値ファイルが環境にインポートされます: .awk ファイルを使用してもかまわない場合は、awk -f を使用できます...)
eval `awk '{ var = $1; $1=""; val=substr($0,2); if ( ENVIRON["SHELL"] ~ /csh$/) { print "setenv", var, " \"" val "\";" } else { print var "=\"" val "\"" ; print "export", var }}' $HOME/env_value_file`
変数値ファイルの形式は次のとおりです。
FOO value for foo
BAR foo bar
BAZ $BAR plus values $FOO
教育目的のデザインノート:
- awk では、フィールド 2 から NF にアクセスする簡単な方法がないため、変数値にスペースが含まれている可能性がある場合は、$1 を変更して $0 を取得し、目的の値に近づける必要があります。
- これを機能させるには、SHELL 変数は常に設定されますが、環境変数としてではなく、大文字と小文字が一貫していないため、以下のようにシェルの値から SHELL 環境変数をウェットにする必要があります。スクリプトを使用する前に、環境変数として。
- また、インポート環境スクリプトの後に新しい環境値を表示する場合は、環境スクリプトをソースする必要があります。
- シェルが eval をうまく実行しない場合は、スクリプトを微調整する必要があります。
ボーン シェル フレーバー (bash、sh、ksh、zsh) の場合:
export SHELL
. import_environment
csh フレーバーの場合: (シェル変数は、csh シェルでは小文字になる傾向があります)
setenv SHELL "$shell"
source import_environment