通過 ssh 會話執行 bash 別名
我在遠程主機上上設置過一個叫做 file_repl 的 bash 別名 。當我使用 ssh 命令登錄遠程主機後,可以很正常的使用這個別名。然而這個 bash 別名卻無法通過 ssh 來運行
-- Vivek Gite
本文導航
? 如何用 ssh 客戶端執行命令
14%
? 理解 bash shell 以及命令的類型
27%
? 在 Unix 系統上無法直接通過 ssh 客戶端執行 bash 別名
46%
? 相關資料
86%
編譯自 | https://www.cyberciti.biz/faq/use-bash-aliases-ssh-based-session/
作者 | Vivek Gite
譯者 | lujun9972
我在遠程主機上上設置過一個叫做 file_repl 的 bash 別名
[1]
。當我使用 ssh 命令登錄遠程主機後,可以很正常的使用這個別名。然而這個 bash 別名卻無法通過 ssh 來運行,像這樣:
我要怎樣做才能通過 ssh 命令運行 bash 別名呢?
SSH 客戶端 (ssh) 是一個登錄遠程伺服器並在遠程系統上執行 shell 命令的 Linux/Unix 命令。它被設計用來在兩個非信任的機器上通過不安全的網路(比如互聯網)提供安全的加密通訊。
如何用 ssh 客戶端執行命令
通過 ssh 運行 命令或date 命令
[2]
可以這樣做:
結果為:
或者:
結果為:
理解 bash shell 以及命令的類型
bash shell
[3]
共有下面幾類命令:
☉ 別名,比如
☉ 關鍵字,比如
☉ 函數 (用戶自定義函數,比如 )
☉ 內置命令,比如
☉ 外部文件,比如
type 命令
[4]
和command 命令
[5]
可以用來查看命令類型:
和 都是外部命令,而 是 的別名。你不能直接執行像 這樣的別名:
在 Unix 系統上無法直接通過 ssh 客戶端執行 bash 別名
要解決這個問題可以用下面方法運行 ssh 命令:
命令選項:
? :強制分配偽終端。可以用來在遠程機器上執行任意的
[6]
基於屏幕的程序,有時這非常有用。當使用 時你可能會收到一個類似 「bash: cannot set terminal process group (-1): Inappropriate ioctl for device. bash: no job control in this shell .」 的錯誤。
bash shell 的選項:
? :運行交互 shell,這樣 shell 才能運行 bash 別名。
? :要執行的命令取之於第一個非選項參數的命令字元串。若在命令字元串後面還有其他參數,這些參數會作為位置參數傳遞給命令,參數從 開始。
總之,要運行一個名叫 的 bash 別名,可以運行下面命令:
結果為:
Running bash aliases over ssh based session when using Unix or Linux ssh cli
下面是我的一個 shell 腳本的例子:
相關資料
更多信息請輸入下面命令查看OpenSSH 客戶端
[7]
和bash 的 man 幫助
[8]
:
via:https://www.cyberciti.biz/faq/use-bash-aliases-ssh-based-session/
作者:Vivek Gite
[10]
譯者:lujun9972校對:wxy
本文由LCTT原創編譯,Linux中國榮譽推出
LCTT 譯者
lujun9972
共計翻譯:75篇
貢獻時間:55 天


TAG:Linux中國 |