私の変数は
LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib
ORACLE_HOME=/usr/lib/oracle/11.2/client64
これらの変数を永続的に保存する方法は?
私の変数は
LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib
ORACLE_HOME=/usr/lib/oracle/11.2/client64
これらの変数を永続的に保存する方法は?
回答:
ファイル.profile
またはログインシェルプロファイルファイル(ホームディレクトリにある)に追加できます。
環境変数を「永続的に」変更するには、少なくとも次の状況を考慮する必要があります。
/etc/profile
、~/.bash_profile
、~/.bash_login
、~/.profile
順番に~/.bashrc
$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
$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
$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/zshrc
zshのために。
別のオプションはを使用することです/etc/environment
。これはLinuxシステムではPAMモジュールによって読み取られ、pam_env
単純な割り当てのみをサポートし、シェルスタイルの拡張はサポートしません。(これに関するDebianのガイドを参照してください。)
これらのファイルにはすでにいくつかの割り当てが含まれている可能性が高いため、ファイルに既に存在する構文に従ってください。
変更を適用するには、必ずシェルを再起動してユーザーを再ログインしてください。
システム全体の環境変数を追加する必要がある場合は、/etc/profile.d
変数を初期化するshスクリプトを含むフォルダーがあります。
ここに変数をエクスポートしたすべてのshスクリプトを配置できます。
Debianのenvに変数を追加する標準的な方法としてこれを使用すべきではありませんが、注意してください。
.profile
では、/etc/
私はこれで変数を設定する方法はありません.profile
教えてください
.profile
あなたのホームディレクトリにあるではない/etc/
[Admin@localhost etc]$ cat ~/.profile cat: /home/Admin/.profile: No such file or directory [Admin@localhost etc]$
:wq
VIにファイルして終了を書き込むコマンドを入力することを忘れないことですesc
前
crontab
スクリプト内の環境変数を考慮する必要があります。crontab
スクリプトの実行時には、これらの場所は検索されません。
すべてのユーザー/シェルに対して行う場合は、ディストリビューションに応じて/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
が必要です(ただし、ソースコードなので、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_VARIABLE
EDIT -そしてそれはプリントアウトを参照してください。私は新しいコマンドシェルを起動した場合、彼らはそこにいる見る
/etc/environment
、bashターミナルを再起動したり、と入力したりしても、OSを再起動する必要がありましたsource /etc/environment
。したがって、環境変数が持続しないという問題がある場合は、再起動してみてください。
/etc/environment
はスクリプトではないため、ソースを取得できません。ログイン時に(および他のいくつかのシステムイベント)PAMによって読み込まれるため、ログアウト/ログインするか、ターミナルで新しいログインセッションを実行して$ su <your username here>
、その分離セッションで新しい値を取得できます。終了すると値が消えるため、おそらく完全にログアウト/ログインするだけでエラーが発生しにくくなります。
Oracleをインストールするとき、[OK]をクリックする前に、Oracleはいくつかのスクリプトを実行するように求めました。このスクリプトは.bash_profile
、oracleユーザーのホームディレクトリにダミー設定を配置します。ファイルを表示するには、ls -al
すべての隠しファイルを表示します。
入力nano bash_profile
してファイルを開きます。ホスト名と適切なsid名を反映するようにファイルを変更します。変更が必要な他の設定を確認します。Ctrlキーを押して保存し、保存するかどうかを尋ねられたらyと入力します。Returnキーを押して保存します。コンピューターを再起動します。oracleユーザーとしてのロギング。入力してデータベースを起動します
sqlplus / as sysdba
startup
/usr/lib/oracle/11.2/client64/lib
、/etc/ld.so.conf.d/
パスの下に新しいファイルを追加することです。その後、LD_LIBRARY_PATHを設定する必要はありません。こちらも参照してください。