Linux環境變量
~/.bash_profile && ~/.bashrc
用戶登陸Linux操作系統的時候,"/etc/profile", "~/.bash_profile"等配置文件會被自動執行。
執行過程是這樣的:
下面看看"~/.bash_profile"文件里面有什么東西
$cat ~/.bash_profile# .bash_profile# Get the aliases and functionsif [ -f ~/.bashrc ]; then . ~/.bashrcfi# User specific environment and startup programsPATH=$PATH:$HOME/bin:/home/work/local/python/lib/python2.6/site-packages/django/bin/:$HOME/bin:/home/work/local/mysql5/bin/;LD_LIBRARY_PATH=/home/work/local/mysql5/lib/mysqlalias py='/home/work/local/python/bin/python'export PATH LD_LIBRARY_PATHunset USERNAME
可以看到~/.bash_profile文件先調用~/.bashrc,然后再把PATH和LD_LIBRARY_PATH加載。
環境變量相關配置文件
/etc/profile是全局性的功能,其中設置的變量作用于所有用戶,~/.bash_profile中設置的變量能繼承/etc/profile中的變量并作用于用戶。
通常二者設置大致相同,所以通常前者會調用后者。
crontab執行環境
大家都知道crontab是個好東東,可以定時執行一些任務,幫助你監控系統狀況,幫助你每天重復的做一些機械的事情。但是crontab有一個壞毛病,就是它總是不會缺省的從用戶profile文件中讀取環境變量參數,經常導致在手工執行某個腳本時是成功的,但是到crontab中試圖讓它定期執行時就是會出錯
一般crontab無法運行的問題都是由環境變量在crontab中不一定可識別引起的。
在運行crontab的時候,是non_login方式調用程序的,此時~/.bash_profile并不會被提前調用。所以,crontab的運行環境相對于login方式進入bash運行的環境來說小得多。如果程序涉及~/.bash_profile使用的環境變量,那么,部分在login方式可以正常運行的程序在crontab下就無法運行。
終極推薦解決方案:
30 12 * * * source ~/.bashrc && cd /home/work/mydir && ./myproj
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
新聞熱點
疑難解答
圖片精選