[study]jenkins執行Shell的小坑

很多時候遇到這種問題,就是單獨執行運行良好的腳本,通過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~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章