を使用しようとしています/etc/environment
。
私の変数が消去されましたPATH
。それ以降、コマンドは認識されませんでした。
シェルで同じコマンドを実行すると問題はありませんが、なぜこれが起こるのですか? !
私のコンテンツ/etc/environment
:
ORACLE_HOME=/usr/lib/oracle/12.1/client64
PATH=$ORACLE_HOME/bin:$PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib
ベストアンサー1
/etc/environment
構成ファイルですpam_env
、シェルから読み取ったファイルではありません。構文はやや似ていますが、違います。特に、既存の変数を参照できません。$ORACLE_HOME/bin
とを含むように検索パスを設定しました$PATH
。つまり、名前にドル記号があるディレクトリです。
すべてのユーザーに変数を設定するには、を編集します。/etc/security/pam_env.conf
この構文はより多様で豊富な構文を持っていますが、それでもシェルで実行できるほど豊富ではありません。
ORACLE_HOME DEFAULT=/usr/lib/oracle/12.1/client64
PATH OVERRIDE=/usr/local/bin:/usr/bin:/bin:${ORACLE_HOME}/bin
LD_LIBRARY_PATH DEFAULT=$ORACLE_HOME/lib
他の変数は参照できますが、変数の以前の値は参照できません。
より柔軟なアプローチが必要な場合は、変数定義を追加してください/etc/profile
。ここでは、すべてのシェル構成を使用できます。欠点は、cronなどを介さずにログインセッションでのみ読むことができることです。. /etc/profile;
ただし、cronジョブの起動時に追加すると簡単に利点があります。
export ORACLE_HOME=/usr/lib/oracle/12.1/client64
PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib