我在远程主机上上设置过一个叫做 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 天
领取专属 10元无门槛券
私享最新 技术干货