私の変数は
LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib
ORACLE_HOME=/usr/lib/oracle/11.2/client64
これらの変数をどのように永久に保存できますか?
答え1
.profile
このファイルまたはログインシェル設定ファイル(ホームディレクトリにあります)にそれらを追加できます。
環境変数を「永続的に」変更するには、少なくとも次の点を考慮する必要があります。
- ログイン/非ログインシェル
- 対話型/非対話型シェル
強く打つ
- ログインシェルであるBashは
/etc/profile
、、、、順にロードされます。~/.bash_profile
~/.bash_login
~/.profile
- Bashは非ログインの対話型シェルとしてロードされます。
~/.bashrc
- 非ログインの非対話型シェルである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/profile
Bourneなどのシェルの場合、/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
答え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