ansible 遠(yuǎn)程過(guò)去 java -version
提示找不到命令
首先掰茶,在腳本中添加echo $JAVA_HOME 入录,which java ,echo $(whoami),然后用ansible遠(yuǎn)程執(zhí)行塔橡,發(fā)現(xiàn)為root用戶(hù)但輸出為空和找不到j(luò)ava; 其次,在~/.bash_profile中添加環(huán)境變量霜第,用ansible遠(yuǎn)程執(zhí)行腳本葛家,發(fā)現(xiàn)依然輸出為空和找不到j(luò)ava環(huán)境變量; 最后,考慮ansible執(zhí)行的環(huán)境變量與登錄時(shí)使用的環(huán)境變量不同,所以將JAVA_HOME寫(xiě)在/etc/bashrc中泌类,用ansible遠(yuǎn)程執(zhí)行腳本癞谒,發(fā)現(xiàn)執(zhí)行正常; 至此刃榨,確定ansible執(zhí)行過(guò)程中并未調(diào)用/etc/profile和~/.bash_profile
解決
ansible遠(yuǎn)程執(zhí)行的是non-login shell 并不會(huì)加載/etc/profile和~/.bash_profile下的環(huán)境變量弹砚,只加載~/.bashrc和/etc/bashrc 如果需要在ansible中執(zhí)行需要特定環(huán)境變量的命令,將環(huán)境變量寫(xiě)在~/.bashrc 枢希,然后source一下~/.bash_profile桌吃。