環境変数を永続的に設定する方法


227

私の変数は

LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib
ORACLE_HOME=/usr/lib/oracle/11.2/client64

これらの変数を永続的に保存する方法は?


2
このページの他の回答は素晴らしいです。1つの小さな推奨事項は/usr/lib/oracle/11.2/client64/lib/etc/ld.so.conf.d/パスの下に新しいファイルを追加することです。その後、LD_LIBRARY_PATHを設定する必要はありません。こちらも参照してください
エリオットフリッシュ14

1
注意してください、この物語には最初に現れる以上のものがあります。私の答えを確認してください。
jasonleonhard

回答:


252

ファイル.profileまたはログインシェルプロファイルファイル(ホームディレクトリにある)に追加できます。

環境変数を「永続的に」変更するには、少なくとも次の状況を考慮する必要があります。

  1. ログイン/非ログインシェル
  2. インタラクティブ/非インタラクティブシェル

バッシュ

  1. ログインシェルとしてbashがロードされます/etc/profile~/.bash_profile~/.bash_login~/.profile順番に
  2. 非ログインインタラクティブシェルとしてのBashがロードされます ~/.bashrc
  3. 非ログイン、非対話型シェルとしてのBashは、環境変数で指定された構成をロードします $BASH_ENV
$EDITOR ~/.profile
#add lines at the bottom of the file:  
     export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib
     export ORACLE_HOME=/usr/lib/oracle/11.2/client64

zsh

$EDITOR ~/.zprofile
#add lines at the bottom of the file:  
     export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib
     export ORACLE_HOME=/usr/lib/oracle/11.2/client64

ksh

$EDITOR ~/.profile
#add lines at the bottom of the file:  
     export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib
     export ORACLE_HOME=/usr/lib/oracle/11.2/client64

ボーン

$EDITOR ~/.profile
#add lines at the bottom of the file:  
     LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib     
     ORACLE_HOME=/usr/lib/oracle/11.2/client64
     export LD_LIBRARY_PATH ORACLE_HOME

cshまたはtcsh

$EDITOR ~/.login
#add lines at the bottom of the file:  
     setenv LD_LIBRARY_PATH /usr/lib/oracle/11.2/client64/lib
     setenv ORACLE_HOME /usr/lib/oracle/11.2/client64

あなたは、すべてのユーザーのためにそれを永続的なものにしたい場合は、下の該当するファイルを編集することができます/etc/つまり、/etc/profileボーンのようなシェルのため、/etc/csh.login(T)cshのために、そして/etc/zsh/zprofileそして/etc/zsh/zshrczshのために。

別のオプションはを使用することです/etc/environment。これはLinuxシステムではPAMモジュールによって読み取られ、pam_env単純な割り当てのみをサポートし、シェルスタイルの拡張はサポートしません。(これに関するDebianのガイドを参照してください。)

これらのファイルにはすでにいくつかの割り当てが含まれている可能性が高いため、ファイルに既に存在する構文に従ってください。

変更を適用するには、必ずシェルを再起動してユーザーを再ログインしてください。

システム全体の環境変数を追加する必要がある場合は、/etc/profile.d変数を初期化するshスクリプトを含むフォルダーがあります。
ここに変数をエクスポートしたすべてのshスクリプトを配置できます。
Debianのenvに変数を追加する標準的な方法としてこれを使用すべきではありませんが、注意してください。


これ.profileでは、/etc/私はこれで変数を設定する方法はありません.profile教えてください
user3021349

6
.profileあなたのホームディレクトリにあるではない/etc/
Kiwy

1
[Admin@localhost etc]$ cat ~/.profile cat: /home/Admin/.profile: No such file or directory [Admin@localhost etc]$
user3021349 14

4
@ user3021349失礼なつもりはありませんが、1秒と思ったら、マスターする別のエディターを使用することもできます。:wqVIにファイルして終了を書き込むコマンドを入力することを忘れないことですesc
Kiwy

3
crontabスクリプト内の環境変数を考慮する必要があります。crontabスクリプトの実行時には、これらの場所は検索されません。
yegle

71

すべてのユーザー/シェルに対して行う場合は、ディストリビューションに応じて/etc/environmentまたはを使用できます/etc/profile/etc/profile.dパッケージングシステムによって行われた更新と競合する可能性が低いため、新しいファイルが存在する場合は、新しいファイルを作成することをお勧めします。

では/etc/environment、変数は通常で設定されますname=value。例:

ORACLE_HOME=/usr/lib/oracle/11.2/client64

では/etc/profileexportこれはスクリプトなので、使用する必要があります。例:

export ORACLE_HOME=/usr/lib/oracle/11.2/client64

の下のファイル/etc/profile.dについても同じことが言えます。また、ファイルが機能するために満たす必要のある命名の制限があるかもしれません。Debianでは、ファイルには拡張子.shが必要です(ただし、ソースコードなので、bang行や実行可能権限は必要ありません)。ディストリビューションのドキュメントを確認するか、/etc/profileスクリプトを見て、これらのファイルがどのようにロードされるかを確認してください。

ただし、セキュリティリスクを含むなど、LD_LIBRARY_PATH永続的な設定には潜在的に問題があることに注意してください。別の方法として、LD_LIBRARY_PATH実行する前に必要な各プログラムのコマンドラインの先頭にを追加する方法を見つけることをお勧めします。例えば:

LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib myprog

これを行う1つの方法は、ラッパースクリプトを使用してプログラムを実行することです。これにプログラムと同じ名前を付けて、/usr/local/binまたはのプログラムの場所のに表示される場所に配置できますPATH。スクリプトの例を次に示します(スクリプトを忘れないでくださいchmod +x)。

#!/bin/sh
LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib /real/location/of/myprog "$@"

environmentファイルに値のペアを追加した場合、それらがロードされる原因は何ですか?たとえば、viエディタを(変更が正常に書き込まれ)から出た後、私は書くために期待していecho $MY_NEW_VARIABLEEDIT -そしてそれはプリントアウトを参照してください。私は新しいコマンドシェルを起動した場合、彼らはそこにいる見る
bkwdesign

これが個人的な問題なのか、それとも何なのかは不明ですが、これをに設定した後/etc/environment、bashターミナルを再起動したり、と入力したりしても、OSを再起動する必要がありましたsource /etc/environment。したがって、環境変数が持続しないという問題がある場合は、再起動してみてください。
ブレアグ

@bkwdesign @ Blairg23 /etc/environmentはスクリプトではないため、ソースを取得できません。ログイン時に(および他のいくつかのシステムイベント)PAMによって読み込まれるため、ログアウト/ログインするか、ターミナルで新しいログインセッションを実行して$ su <your username here>、その分離セッションで新しい値を取得できます。終了すると値が消えるため、おそらく完全にログアウト/ログインするだけでエラーが発生しにくくなります。
アーロンダニエルソン

2

Oracleをインストールするとき、[OK]をクリックする前に、Oracleはいくつかのスクリプトを実行するように求めました。このスクリプトは.bash_profile、oracleユーザーのホームディレクトリにダミー設定を配置します。ファイルを表示するには、ls -alすべての隠しファイルを表示します。

入力nano bash_profileしてファイルを開きます。ホスト名と適切なsid名を反映するようにファイルを変更します。変更が必要な他の設定を確認します。Ctrlキーを押して保存し、保存するかどうかを尋ねられたらyと入力します。Returnキーを押して保存します。コンピューターを再起動します。oracleユーザーとしてのロギング。入力してデータベースを起動します

sqlplus / as sysdba

startup  

これは受け入れられた答えとどう違うのですか?
ロアイマ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.