シェフのレシピを使用してデフォルトの環境変数を変更する際に問題が発生しました。私の要求は、現在の作業シェル(bash
からcsh
へ)を変更し、TERM
変数をxterm
からvt100
に変更することです。私はいくつかの組み合わせを試みたが、その動作していません。シェフのレシピを使用してデフォルトの環境変数を変更する方法
execute 'change present working shell' do
command '/bin/csh'
end
execute 'change term env' do
command 'setenv TERM vt100'
end
シェフからも実行するためにスクリプトを使用しましたが、動作しません。
これは正解ですが、 '/ etc/environment'とその友人はグローバルから_far_です。それらは一般にログインシェルにのみ適用されます。これは '$ TERM'でも問題ありませんが、実際にはグローバルではないことを常に覚えておいてください。彼らは、サービス(通常)やシェルを使わずにSSHで実行されるコマンドなどのものには適用されません。 – coderanger
その情報をありがとう。本当に_global_環境変数を定義する方法はありますか? '/ etc/default/'のようなものが良い場所ではない場合、必要性はまだありません。確信が持てません。好奇心のためだけです。 –
StephenKing
いいえ、残念ながら、これはWindowsが正しく行った数少ない場所の1つで、Unixは間違っていました。 env変数が設定される唯一の方法は 'setenv()'(シェルのinitファイルが低レベルで行うことです)を呼び出すか、親プロセスから継承することです。あなたが自分のinitを書くのでなければ、本当にグローバルenv変数を設定する場所はありません:) – coderanger