web-dev-qa-db-ja.com

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

私の変数は

LD_LIBRARY_PATH=/usr/lib/Oracle/11.2/client64/lib
Oracle_HOME=/usr/lib/Oracle/11.2/client64

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

238
user3021349

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

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

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

bash

  1. ログインシェルが次の順序で/etc/profile~/.bash_profile~/.bash_login~/.profileをロードするときにbash
  2. 非ログインインタラクティブシェルが~/.bashrcをロードするため、bash
  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/の下の対応するファイルを編集できます。つまり、Bourneのようなシェルの場合は/etc/profile、(t)cshの場合は/etc/csh.login、zshの場合は/etc/zsh/zprofile/etc/zsh/zshrcです。

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

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

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

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

263
Kiwy

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

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

Oracle_HOME=/usr/lib/Oracle/11.2/client64

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

export Oracle_HOME=/usr/lib/Oracle/11.2/client64

同じことが/etc/profile.dの下のファイルにも当てはまります。ファイルが機能するために満たす必要のある命名の制限がある場合もあります。 Debianでは、ファイルの拡張子は.shである必要があります(ただし、ソースが指定されているため、強行や実行可能権限は必要ありません)。ディストリビューションのドキュメントを確認するか、/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 "$@"
73
Graeme

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

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

sqlplus / as sysdba

startup  
2
frankfurt