Как запустить скрипт Bash из терминала, используя инстансированный терминал в качестве вызывающего кода скрипта? - PullRequest
0 голосов
/ 11 февраля 2019

Так что название, вероятно, не очень хорошее, но я, честно говоря, не могу сказать это лучшеПо сути, для того, чтобы сэкономить около 5 с моего рабочего дня, я написал простой скрипт, который регистрирует мой экземпляр терминала в SSH для Github, и мне нужно набрать его, если я когда-нибудь закрою свой терминал:

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

Поэтому я поместил это в скрипт, чтобы я мог просто вызвать этот скрипт из терминала, который я открываю, конечно, он запускается в отдельном экземпляре, и PID не совпадает.

Это что-то объясняет?

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Команды, выводимые ssh-agent -s, должны запускаться в самой оболочке, а не из скрипта, запускаемого оболочкой.Таким образом, у вас есть два варианта:

  • источник сценария: . scriptname
  • установить функцию оболочки, возможно, загруженную из ~/bash_aliases или ~/.bash_profile.Например:
gitagent(){
    eval $(ssh-agent -s)
    ssh-add ~/.ssh/github
}

Обратите внимание, что во многих современных дистрибутивах Linux есть опция (при условии, что она не используется по умолчанию) для автоматического запуска ssh-agent при входе в систему.Проверьте документацию вашего дистрибутива.Тогда все, что вам нужно будет выполнить, это команда ssh-add.

0 голосов
/ 11 февраля 2019

Вы можете 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...