如何使用实例终端作为脚本代码的调用者从终端运行Bash脚本?

时间:2019-02-11 10:06:34

标签: bash unix ssh

所以这个标题可能不是很好,但是老实说,我说不出更好的话了。 基本上,为了节省大约5秒钟的时间,我编写了一个简单的脚本,将我的终端实例注册到SSH for Github,如果我关闭终端,则需要输入以下内容:

eval $(ssh-agent -s)
ssh-add ~/.ssh/github

所以我将其放在脚本中,这样我就可以从打开的终端中调用该脚本,当然,该终端在单独的实例中运行且PID并不相同。

这种解释吗?

2 个答案:

答案 0 :(得分:1)

ssh-agent -s输出的命令必须在shell本身中运行,而不是从shell启动的脚本中运行。因此,您有两种选择:

  • 提供脚本:. scriptname
  • 设置外壳程序功能,可能是从~/bash_aliases~/.bash_profile加载的。例如:
gitagent(){
    eval $(ssh-agent -s)
    ssh-add ~/.ssh/github
}

请注意,许多现代linux发行版都有一个选项(假定它不是默认值),可以在登录时自动运行ssh-agent。检查您的发行版文档。然后,您只需要运行ssh-add命令即可​​。

答案 1 :(得分:0)

您可以source.脚本。

cat <<'EOF' >script.sh
#!/bin/bash
eval $(ssh-agent -s)
ssh-add ~/.ssh/github
bla bla
EOF

source script.sh # will run the script.sh as the same pid, ie. source it
. script.sh  # is the same

但是我建议只将用户配置添加到~/.ssh/config

Host github.com
   IdentityFile ~/.ssh/github