Linux
腳本在本地和通過 ssh 的不同行為
我在伺服器-A 上有一個腳本
腳本-A
#!/bin/bash -l echo "script-A.sh" | change-environment.sh
當我 ssh 到伺服器 A 並執行它時,它工作正常。然而,當我
ssh user@server-A ./script-A.sh
Script-A 執行,但在 change-environment.sh 中引發未定義變數錯誤。
change-environment.sh 在 c shell 中執行(我無法控制腳本,所以我使用的方法是我可以使用它的唯一方法),但其他一切都在 bash 中。
在I can run a script local, but cannot do “ssh HOSTNAME /path/to/script.sh”找到了類似的問題 。但是,該問題沒有解決方案,並且已經存在一年了。
將 ssh 與命令一起使用時,即使您的腳本使用
#!/bin/bash -l
.嘗試
ssh user@server-A bash -l
,然後執行您的腳本。您還可以創建類似的東西#!/bin/bash export
然後在手動登錄 (
ssh user@server-A
) 和通過命令 ( ) 使用 ssh後執行它ssh user@server-A name-of-that-script.sh
。例如,在 Mac OS X 上, using
ssh martin@nathan bash -l
甚至沒有 setPS1
,而普通的ssh martin@nathan
互動式 shell 會這樣做。另一個重要區別是偽終端僅在互動執行時分配(無需命令登錄)。