2011-09-28 118 views
0

我有一個bash腳本,它接受一個參數做這樣的事情:猛砸EVAL引號內

的ssh -t someserver 「SETENV DISPLAY $ 1;在/ usr/bin中/ someprogram」

我怎麼能強迫bash替換$ 1而不是將文字字符「$ 1」作爲顯示變量?

+0

你確定報價如圖所示?它應該如圖所示工作。 1美元可能沒有你期望的價值嗎? – sehe

+0

看起來應該是這樣,因爲bash在雙引號內執行替換... –

+0

'setenv'只在t?csh中有用,這是否真的是您在遠程端運行的? – tripleee

回答

1

根據對sehe的回答您的意見,這聽起來像你只是想遠程命令使用本地X顯示器 - 以便程序在遠程服務器上運行(someserver),但在運行ssh命令的計算機上顯示。

這可以通過僅僅通過-X來完成,例如,

ssh -X someserver /usr/bin/someprogram 

由於某些原因,這對幾個程序無效,例如evince。我不確定爲什麼。我很確定evince是我通過SSH連接轉發時遇到的唯一的應用程序。

如果這不是你想要做的,請解釋。

1

編輯你知道的

ssh -X ... 
ssh -Y ... 

它已經支持X轉發開箱?也看看

xhost + 

萬一你需要增加對'賓客'的權限。

如果你要轉發非標準X顯示的地址,你總是可以使用

DISPLAY=localhost:3 ssh -XCt [email protected] xterm 

獎金:使ssh背景的認證後,加上 '-f'

什麼地方?這應該已經如圖所示。遠程?逃避$:\$

不過,我不知道在哪裏的命令將採取它的參數($ 1)

+0

如果我的腳本被調用,runRemoteProgWithDisplay,我想能夠做到./runRemoteProgWithDisplay 129.1.1.1:1 ....這是目前給我一個錯誤說無效顯示 – GBa

+0

**編輯**添加提示 – sehe