背景:
因最近試安裝Linux下的jira,有一個中文插件安裝后,一旦設置開機啟動后,它是英文,而在終端再重新啟動一次后呢,似乎插件生效,它又恢復為正常中文界面,我首先想這這涉及到一個環境變量的問題,因為在我設置開機啟動的服務時用service jira start出現找不到一些變量,如:獲取不到java的home目錄,提示找不到,為此,我加上了java的環境變量開機啟動Ok了,但是英文,我對英文認識少,但還是想用中文,否則插件就等於白安了。
為此,需要弄清這兩者的環境變量的區別在哪兒,如何查看一個運行程序的環境變量如下兩種方法:
方法一:通過獲取進程編號得到環境變量:
root@192.168.98.128:~# ps aux|grep jira root 2341 25.3 55.0 758544 384956 pts/0 得到PID為:2341 查看該進程的環境變量命令如下: ps eww -p 2341 //得到一大串的環境變量 方法二,查看proc目錄下的環境信息並分離出環境變量 tr '\0' '\n' < /proc/2341/environ 經diff區分發現后得出有兩個點不同: (1)TERM=linux TERM=xterm //這個可能是我在用SecureCRT時設置的是xterm設置時把這個變量帶入進去了(在:會話選項->終端->仿真->終端:xterm) (2)LANG=en_US.UTF-8 LANG=zh_CN.UTF-8 //這兒是一個終端編碼的問題:en_US 和 zh_CN還是有區別的,這兒有可能就是問題所在。 現在這樣處理: export LANG=zh_CN.UTF-8 把這一行放在: /etc/init.d/jira 這個啟動的命令前一行即可。 export LANG=zh_CN.UTF-8 nohup /usr/local/jira/bin/shutdown.sh > /dev/null 2>&1 & |~ 26 usleep 100000 |~ 27 nohup /usr/local/jira/bin/startup.sh > /dev/null 2>&1 & 經過上述修改后,果然成功,大功告成,猜想正確,得證。 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- 附錄疑問:nohup執行的shell腳本,剛設置的全局變量不能傳遞到腳本中使用嗎? export LOGFILE #這里要導出為環境變量才能被123.sh進程使用 nohup 123.sh & ================================================ 當然也可以不必export,只要source 腳本就行了,全局變量就被設置到當前shell進程里了,如果希望它成為環境變量以便被之后的shell子進程使用就要export了。 我在思考:為何這個jira啟動時沒有去讀這個文件的值呢?奇怪,難道是自己的jira版本太低了么。 vi /etc/sysconfig/i18n 通過開機啟動和終端運行時的環境變量的不同,進而匹配成相同,這個問題及得到了解決。 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 下面附加:開機啟動后的環境變量情況和終端啟動的環境變量區別產生的原因: 首先清楚在linux里面無論是在命令行輸入還是系統設置等都是屬於shell。(開機啟動設置在(/etc/init.d/rcS中)、配置系統環境變量的shell位於/etc/profile、配置用戶級環境變量的shell為~/.bashrc—每次啟動終端都執行;或~/.bash_profile—會話開始時執行)。把庫的路徑添加到環境變量LD_LIB_PATH中即可找到。 備忘: 1、 在命令行編輯時可用emacs的命令進行編輯,如ctrl-b表示退后一步;ctrl-a表示光標移到最前等。 2、 可以同時輸入幾個命令順序執行:command1 ; command2 或 command1 && command2(當command1執行成功時再執行command2)。 3、 后台運行和程序debug輸出重定向: 在終端運行一個程序后可以用ctrl-z掛起然后輸入bg命令使其后台運行(當然也可直接在后面加&)。Command & > /dev/null &將不會再終端輸出調試信息。 4、 輸出重定向: (1)多個命令重定向,| 如 | grep text | less等,(2)重定向至文件 command > file(把file文件內容換成command的輸出) 或 command >> file(直接把command的輸出加在file文件后面)。 5、 改變提示符: 通過設置PS1=”something。 6、 用alias newcommand=”oldcommand”設置命令的別名。 1.2. 6410開機啟動和環境變量設置 1、 開機啟動程序加在shell文件/etc/init.d/rcS文件中 2、 環境變量添加在/etc/profile文件(PATH和LD_LIBRARY_PATH)