[英]use environment variables of remote server in ssh command
我有兩台服務器 X(主機)和 Y(遠程)。 腳本 abc.sh 保存在 Y 服務器上。 我正在使用 ssh 命令從服務器 X 運行 abc.sh。
腳本運行成功,但包含服務器 Y 的環境變量(保存在 /.bash_profile 中)的命令給出空白輸出。
當我從服務器 Y 本身運行 abc.sh 時,所有命令都成功運行。
我的問題是如何包含遠程服務器(Y)的環境變量,以便完整腳本能夠成功執行。
注意:我沒有對 etc 目錄的寫訪問權限,因此我無法更改其中的任何內容。
提前致謝!
您可以包含您的環境變量,如下所示:
ssh user@host_y 'source ~/.bash_profile; /path/to/your/script/abc.sh'
由於直接命令運行不是交互式 shell,因此您的變量將無法在那里工作。 source
將在您當前的 shell 中運行腳本,並將該文件中的可見環境變量添加到您的腳本中。
我使用 ssh 連接遠程機器運行一些 cron 作業。 代碼無法加載所有環境變量。 如果我在那台機器上運行代碼,它就可以工作。 我嘗試了幾種對我不起作用的方法。 最后,我在~/.bashrc
文件中的下面~/.bashrc
行注釋。 這個對我有用。
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
ssh 連接打開一個非交互式外殼。 因此,如果您注釋或刪除此塊代碼,它將為非交互式 shell 加載環境變量。
或者,您可以將所有所需的環境行代碼放在該行上方。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.