Linux
Linux 腳本命令解釋無法遠端工作
我有以下 linux 腳本(簡化):
RUN_JAVA=$(which java) if [ -z $RUN_JAVA ] then echo "No Java found!" >> /tmp/output.txt else echo $RUN_JAVA >> /tmp/output.txt fi
當我在同一主機上執行它時,執行完美,輸出到文件:
/usr/java/default/bin/java
但是當我從另一台主機執行它時:
ssh ${user}@${hotname} "/tmp/testRemote.sh"
然後在該主機上找不到 Java 安裝:
沒有找到 Java!
可能是什麼原因?
which
不檢查任何潛在位置,只檢查$PATH
.
$PATH
並且在遠端主機上設置的那個中找不到 Java 。原因是它
ssh user@host command
不會創建登錄會話,但互動式會話和 bash(可能還有其他 shell)會根據會話類型獲取不同的文件來設置您的環境。有關確切差異,請參閱 bash 手冊的 INVOCATION 部分,但可能您
/usr/java/default/bin/
在 PATH 中添加了一個~/.bash_profile
不會ssh user@host command
載入該文件而僅用於~/.bashrc
設置環境的地方。