環境変数を恒久的に設定する方法

環境変数を恒久的に設定する方法

私の変数は

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

これらの変数をどのように永久に保存できますか?

答え1

.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

扱いにくい

$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

set -Ux LD_LIBRARY_PATH /usr/lib/oracle/11.2/client64/lib
set -Ux ORACLE_HOME /usr/lib/oracle/11.2/client64

変化の多く

$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/profileBourneなどのシェルの場合、/etc/csh.login(t)cshおよびzsh/etc/zsh/zprofileの場合/etc/zsh/zshrc)。

/etc/environmentもう1つのオプションは、LinuxシステムのPAMモジュールから読み込み、pam_env単純な割り当てのみをサポートし、シェルスタイル拡張はサポートしていないを使用することです。 (望むよりDebian ガイドこの点について。 )

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

変更を適用するには、シェルを再起動してユーザーとして再度ログインします。

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

答え2

/etc/environmentすべてのユーザー/シェルでif操作を実行するには、展開に応じてまたはを使用できます/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 "$@"

答え3

使用しているUNIXタイプが指定されていません。 FreeBSD(およびNetおよびOpen BSD)では、で詳細を使用できます/etc/login.confマニュアルページただし、次のようなものを追加できます。

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

基本クラスとしてシェルかどうかに関係なく、すべてのユーザーに設定されます。

PAMを使用している場合は、同様の操作を実行できるPAMモジュールもあります。例えばpam_envで読みます/etc/environment

答え4

「この変数を永久に保存する方法は?」

すべての答えは、「再起動後」という意味から永久的な意味であると仮定するようです。
私は、本番アプリケーションが同じプロセスでENVセットとして実行できるように、bashセッションに対してENVを保存する方法を偶然発見しました。

同じ考えを持つ人々が参考にするために、この答えをここに残しておきます。
解決策は、次のスクリプトに入れることです。

設定-envs.sh:

#!/bin/sh
export ENV1="some value"
export ENV1="some value"

chmod +x set-envs.sh一度実行可能にし、
アプリケーションsource(または略語.)の前に実行します。

. ./set-envs.sh
./run-the-app.sh  # or such

関連情報