很多時候遇到這種問題,就是單獨執行運行良好的腳本,通過jenkins調用執行就問題百出,這是爲什麼呢?其實主要問題是出在環境變量上。
Linux Shell分爲登錄式Shell,和非登錄式Shell,是Shell的兩種不同的運行模式。
日常,我們通過ssh登錄到服務器,這時候打開的Shell是登錄式shell,而通過遠程命令去運行shell,就屬於非登錄式shell了。
兩種模式最大的區別就是初始化時執行的初始化腳本不同。
通常我們如果需要設置環境變量,都習慣於在~/.bash_profile中設置,但是這個文件在登錄式shell纔會被調用,非登錄shell是不會調用它的。
非登錄shell的腳本調用順序是:~/.bashrc->/etc/bashrc->/etc/profile.d/*.sh。
所以,如果我們希望設置的環境變量在jenkins執行的腳本中能夠使用,最好的習慣是在/etc/profile.d/目錄下創建一個自己的sh文件,把環境變量的定義寫裏邊。
以上內容不光適用於jenkins,也適用於crontab~