在 ssh 远程服务器的 heredoc 中使用别名
Using aliases in a heredoc that ssh a remote server
我的 ~/.bashrc 中有一个函数定义如下
function sshpushg() {
iro <<EOF #iro is sshpass -p *** ssh addressOfServer
ssh computer01 #connect to my remote computer
Work
st
add
git commit -m "pushing automatically by ssh"
pushg
EOF
}
在我的远程帐户中,我的 ~/.bashrc 文件包含以下行
alias Work=' cd ~/Documents/Work'
alias st='git status'
alias add='git add -A'
alias pushg='git push origin master'
我希望函数 sshpushg 自动添加、提交并将我的工作文件夹中的所有内容推送到 github,但是当我 运行 命令时出现错误:
-bash: line 1: Work: command not found
-bash: line 2: st: command not found
-bash: line 3: add: command not found
然后出现一堆错误,表明这不是 git 存储库,因为工作未执行且我不在正确的目录中。
如何在我的函数 sshpushg 中使用在我的远程帐户上设置的别名?显然,我可以在没有别名的情况下重新键入所有命令,但有没有办法不这样做?
当您 运行 使用输入脚本 ssh 时,它不会创建终端并且它的 shell 不会 运行 ~/.bashrc
。您可以通过强制使用 ssh computer01 bash -i
进行交互式 shell 来解决此问题,但这将尝试将输入文件用作终端并给您另一组错误:
$ ssh my-server bash -i <<< 'aliastest'
bash: cannot set terminal process group (-1): Inappropriate ioctl for device
bash: no job control in this shell
che@my-server ~ $ aliastest
alias works
che@my-server ~ $ exit
你可能可以通过某种方式伪造终端来解决这个问题,但最简单的方法是写出命令,或者在服务器上创建一个脚本,然后 运行ning 它,沿着行
#!/bin/bash
cd ~/Documents/Work
git status
git add -A
git push origin master
然后 运行通过
进行处理
sshpass -p *** ssh addressOfServer ssh computer01 ~/path/to/my/script.sh
我的 ~/.bashrc 中有一个函数定义如下
function sshpushg() {
iro <<EOF #iro is sshpass -p *** ssh addressOfServer
ssh computer01 #connect to my remote computer
Work
st
add
git commit -m "pushing automatically by ssh"
pushg
EOF
}
在我的远程帐户中,我的 ~/.bashrc 文件包含以下行
alias Work=' cd ~/Documents/Work'
alias st='git status'
alias add='git add -A'
alias pushg='git push origin master'
我希望函数 sshpushg 自动添加、提交并将我的工作文件夹中的所有内容推送到 github,但是当我 运行 命令时出现错误:
-bash: line 1: Work: command not found
-bash: line 2: st: command not found
-bash: line 3: add: command not found
然后出现一堆错误,表明这不是 git 存储库,因为工作未执行且我不在正确的目录中。
如何在我的函数 sshpushg 中使用在我的远程帐户上设置的别名?显然,我可以在没有别名的情况下重新键入所有命令,但有没有办法不这样做?
当您 运行 使用输入脚本 ssh 时,它不会创建终端并且它的 shell 不会 运行 ~/.bashrc
。您可以通过强制使用 ssh computer01 bash -i
进行交互式 shell 来解决此问题,但这将尝试将输入文件用作终端并给您另一组错误:
$ ssh my-server bash -i <<< 'aliastest'
bash: cannot set terminal process group (-1): Inappropriate ioctl for device
bash: no job control in this shell
che@my-server ~ $ aliastest
alias works
che@my-server ~ $ exit
你可能可以通过某种方式伪造终端来解决这个问题,但最简单的方法是写出命令,或者在服务器上创建一个脚本,然后 运行ning 它,沿着行
#!/bin/bash
cd ~/Documents/Work
git status
git add -A
git push origin master
然后 运行通过
进行处理sshpass -p *** ssh addressOfServer ssh computer01 ~/path/to/my/script.sh