【问题标题】:BASH alias running a script on another server在另一台服务器上运行脚本的 BASH 别名
【发布时间】:2015-11-05 16:49:06
【问题描述】:

这要么相当简单,要么不可能,但我似乎无法接受。我正在尝试运行位于远程服务器上的脚本,我的 .bashrc 中有以下别名:

alias fin='sh username@host.co.uk:~/scripts/finder.sh'

我已经为该主机设置了 SSH 密钥身份验证,但是我收到以下错误:

sh: 0: Can't openusername@host.co.uk:~/scripts/finder.sh

有人可以帮忙吗,谢谢:)

【问题讨论】:

标签: bash


【解决方案1】:

您不能像引用文件名一样引用远程脚本。您可以使用ssh,但语法略有不同。

ssh username@host.co.uk scripts/finder.sh

顺便说一句,函数通常比别名更好。

fin () {
    ssh username@host.co.uk scripts/finder.sh "$@"
}

"$@" 用于传递参数。如果脚本不带参数,则可以省略。

【讨论】:

  • 更新了一个例子。
【解决方案2】:

alias fin='ssh username@host.co.uk /home/username/scripts/finder.sh'

您需要确保finder.sh 具有执行权限并以用户username 的身份在host.co.uk 上本地运行

【讨论】:

  • 远程shell将从远程用户的主目录运行;对完整路径进行硬编码是多余的,这里涉及一些推测。
  • 对我来说,在 bash shell 中的 mac 上,它解析为 /Users/username/scripts/finder.sh
  • @sdayal,它基于对实际用户主目录的查找,因此它适用于手头的系统。 /home/username 是传统 unix 系列操作系统的约定,因此它可能是 OP 正在通过 SSH 连接的这样一个系统。
猜你喜欢
  • 1970-01-01
  • 2016-10-06
  • 2020-05-23
  • 1970-01-01
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多