簡體   English   中英

如何將環境變量傳遞給不同機器上的bash

[英]How to pass environment variables to bash on different machine

我需要在另一台機器上運行Shell腳本。 通用的調用方法如下:

ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null bot-bono@other-dt 'bash' < $GIT_ROOT/chip/sw/scripts/build.sh

由於build.sh調用了其他腳本,因此無法將參數傳遞給它。 據我所知,如果在本地調用bash ,它將繼承環境變量。 如果在遠程計算機上調用它,則不會發生。

有人知道我可以將環境變量傳遞給遠程盒子上的bash嗎? 或者,也許有更好的方法可以在使用本地環境變量的遠程系統上調用build.sh

最好的方法是使用-o SendEnv=YOURVARIABLE ,但這僅在服務器設置為寬松地允許變量的情況下才有效。 如果不是,這里是可能的解決方法:

您可以在命令本身中設置變量:

ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null bot-bono@other-dt \
    "export CFLAGS='$CFLAGS' LDFLAGS='$LDFLAGS'; bash" < $GIT_ROOT/chip/sw/scripts/build.sh

這不需要任何特定的SSH權限,但確實需要轉義變量(如果變量可以包含單引號)。

如果您有很多變量並且不想對它們進行排序,則可以將整個環境與腳本一起轉儲:

{ set; cat "$GIT_ROOT/chip/sw/scripts/build.sh" } | \
    ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null bot-bono@other-dt 'bash' 

這將在遠程系統上設置所有本地變量和函數,但可能會導致問題,因為它不會將其限制為所需的變量,並且會覆蓋PATH和DISPLAY等變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM