Message 850 not found; No message file for product=network, facility=NL

今天早上來單位,啓動服務器上的數據庫的時候發現竟然起不起來,報的錯以前沒見過:

?

Message 850 not found; No message file for product=network, facility=NL

?

後來在網上查了一下,是找不到oracle安裝主目錄的原因。想了一想可能是環境變量出問題了,export了一下發現果然沒有$ORACLE_HOME 那幾個環境變量,看了一下?.bash_profile沒有發現問題,於是source .bash_profile了一下,正常啓動了oracle

?

想了一陣子之後明白了問題所在:用ssh登錄服務器時用的是其它用戶名,而切換至oracle時用的是su oracle而不是su - oracle,用su oracle時不會切換用戶環境,也不會加載新用戶的環境變量

?

在網上查了一下發現加不加這一個小橫槓的區別大了:

?

?

?

?

su 是切換到其他用戶,但是不切換環境變量(比如說那些你用export命令查看一下,就知道兩個命令的區別了)
su - 是完整的切換到一個用戶環境

?

再貼點資料:

?

.bash_profile只在登陸的時候讀取,在X下登陸打開一個console的話是不讀取該文件的。如果你在字符模式下登陸輸入用戶和密碼的話是讀取的。如果在X下打開一個console要讀取配置,就要寫在.bashrc裏面,而不是.bash_profile裏面. 

你可以在.bashrc裏面加入:

if test -f .bash_profile; then
. .bash_profile
fi


這樣.bash_profile裏面內容變了就不需要再改.bashrc面的內容了.

bash 登陸的時候讀取配置文件的順序如下:
.bash_profile
.bash_login
.profile

按這個順序只要讀到一個就不再讀取其他的兩個. 當然全局的/etc/profile是最先讀的,/etc/profile裏面的配置可以在以上三個文件中覆蓋掉.

當bash不是作爲登陸shell打開時,比如你先用csh登陸,然後再輸入bash切換到bash ,那麼只讀取.bashrc
裏的內容.不讀取.bash_profile
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章