如何从终端运行Bash脚本,使用实例终端作为脚本代码的调用方?
所以这个标题可能不是很好,但我真的说不出更好的了。 基本上,为了节省我一天的时间,我编写了一个简单的脚本,将我的终端实例注册到SSH for Github,如果我关闭终端,我需要键入以下内容:如何从终端运行Bash脚本,使用实例终端作为脚本代码的调用方?,bash,unix,ssh,Bash,Unix,Ssh,所以这个标题可能不是很好,但我真的说不出更好的了。 基本上,为了节省我一天的时间,我编写了一个简单的脚本,将我的终端实例注册到SSH for Github,如果我关闭终端,我需要键入以下内容: eval $(ssh-agent -s) ssh-add ~/.ssh/github 所以我把它放在一个脚本中,这样我就可以从我打开的终端调用这个脚本,当然它运行在一个单独的实例中,PID是不同的 这可以解释吗?你可以或脚本 cat <<'EOF' >script.sh #!/bin/
eval $(ssh-agent -s)
ssh-add ~/.ssh/github
所以我把它放在一个脚本中,这样我就可以从我打开的终端调用这个脚本,当然它运行在一个单独的实例中,PID是不同的
这可以解释吗?你可以或
脚本
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-agent-s输出的命令必须在shell本身中运行,而不是从shell启动的脚本中运行。所以你有两个选择:
- 脚本的源代码:
。脚本名称
- 设置一个shell函数,可能从
或~/bash\u别名
加载。例如:~/.bash\u配置文件
注意,许多现代linux发行版都有一个选项(假设它不是默认的)在登录时自动运行ssh代理。检查您的分发文档。然后,您只需要运行
ssh add
命令。您不能在~/.ssh/config
中添加一个配置,以便在登录github时使用此特定密钥吗?或者您是否与其他人共享您的帐户?如果您不运行代理,那么我猜您必须在每次使用密钥时键入密码以解锁密钥。除非你不给它一个密码,这有点不安全。你每次登录一个新的终端时都要输入密码吗?我只是想假设,我的电脑有防火墙,我的用户有密码,没有人可以不受限制地访问我的数据,因此不需要加密我存储在我电脑上的数据。因此,将配置添加到ssh配置不是你的方法。就我个人而言,我运行一个登录范围的代理,并在第一次需要时将密钥加载到其中。我也有配置,但如果没有代理,您仍然需要键入密码。我保留备份,让未受保护的密钥四处浮动似乎是个坏主意。在多用户系统上,风险更大。
Host github.com
IdentityFile ~/.ssh/github
gitagent(){
eval $(ssh-agent -s)
ssh-add ~/.ssh/github
}