私はLinuxに初めて触れました。 Debian Wheezyは私のラップトップ(64ビット)で動作しています。
ORACLE_SID
最近、評価目的でOracle 11g R2データベースをインストールし、スクリプトを使用して環境変数を定義しました(例:/etc/profile.d/oracle.sh
これはうまく機能しますが、「oracle」ユーザーの場合)。
ユーザーを変更しますsu - oracle
。 D
値がORACLE_SI
ファイルで指定された値と異なります/etc/profile.d/oracle.sh
。 oracleユーザーのホームディレクトリにはファイル(例:.bash_profile
etc.)がないので.profile
、この値はどこから来ましたか?
環境変数のオーバーロード順序は何ですか?
答え1
何を設定しても、最終的に環境変数が勝ちます。したがって、問題ではありません。$HOME/.bashrc
Oracleユーザー・ファイルの変数を下に設定しました。
このファイル$HOME/.bashrc
はキーファイルで、対応するソースファイルは以下のファイル/etc/bashrc
です/etc/profile.d/*.sh
。それで、ただORACLE_SID=whatever
設定してみました$HOME/.bashrc
。
デバッグのヒント
何が起こっているかを確認するには、次のようにログインをデバッグできます。
su - oracle -c "env SHELLOPTS=xtrace bash"
上記のコマンドを使用すると、bashからさまざまなファイルを取得できるため、次の手順を実行できます。
...
...
++ for i in '/etc/profile.d/*.sh'
++ '[' -r /etc/profile.d/less.sh ']'
++ '[' '[\u@\h \W]\$ ' ']'
++ . /etc/profile.d/less.sh
+++ '[' -x /usr/bin/lesspipe.sh ']'
+++ export 'LESSOPEN=||/usr/bin/lesspipe.sh %s'
+++ LESSOPEN='||/usr/bin/lesspipe.sh %s'
++ for i in '/etc/profile.d/*.sh'
++ '[' -r /etc/profile.d/PackageKit.sh ']'
++ '[' '[\u@\h \W]\$ ' ']'
++ . /etc/profile.d/PackageKit.sh
++ for i in '/etc/profile.d/*.sh'
++ '[' -r /etc/profile.d/qt.sh ']'
++ '[' '[\u@\h \W]\$ ' ']'
++ . /etc/profile.d/qt.sh
+++ '[' -z /usr/lib64/qt-3.3 ']'
++ for i in '/etc/profile.d/*.sh'
++ '[' -r /etc/profile.d/udisks-bash-completion.sh ']'
++ '[' '[\u@\h \W]\$ ' ']'
++ . /etc/profile.d/udisks-bash-completion.sh
+++ '[' -z '4.1.7(1)-release' ']'
+++ complete -o filenames -F __udisks udisks
++ for i in '/etc/profile.d/*.sh'
++ '[' -r /etc/profile.d/vim.sh ']'
++ '[' '[\u@\h \W]\$ ' ']'
++ . /etc/profile.d/vim.sh
+++ '[' -n '4.1.7(1)-release' -o -n '' -o -n '' ']'
+++ '[' -x //usr/bin/id ']'
++++ //usr/bin/id -u
+++ '[' 0 -le 200 ']'
+++ return
++ for i in '/etc/profile.d/*.sh'
++ '[' -r /etc/profile.d/which2.sh ']'
...
...