首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在使用ssh远程服务器的server文档中使用别名

在使用ssh远程服务器的server文档中使用别名
EN

Stack Overflow用户
提问于 2018-07-10 08:35:58
回答 1查看 288关注 0票数 0

我的~/.bashrc中有一个函数,它的定义如下

代码语言:javascript
复制
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文件包含以下行

代码语言:javascript
复制
alias Work=' cd ~/Documents/Work'
alias st='git status'
alias add='git add -A'
alias pushg='git push origin master'    

我希望sshpushg函数自动添加、提交和推送我工作文件夹中的所有内容到github,但当我运行该命令时,我得到了以下错误:

代码语言:javascript
复制
-bash: line 1: Work: command not found
-bash: line 2: st:  command not found
-bash: line 3: add: command not found

然后出现一堆错误,说这不是一个git存储库,因为工作没有执行,而且我没有在正确的目录中。

如何在sshpushg函数中使用在远程帐户上设置的别名?显然,我可以不用别名重新输入所有的命令,但是有没有办法不这样做呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-10 09:11:45

当您使用输入脚本运行ssh时,它不会创建终端,其外壳程序也不会运行~/.bashrc。您可以通过强制使用ssh computer01 bash -i的交互式外壳来解决此问题,但这将尝试使用输入文件作为终端,并给您带来另一组错误:

代码语言:javascript
复制
$ 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

您可能可以通过以某种方式伪造一个终端来解决这个问题,但最简单的方法是将命令写出来,或者在服务器上创建一个脚本,然后运行它,如下所示

代码语言:javascript
复制
#!/bin/bash
cd ~/Documents/Work
git status
git add -A
git push origin master

然后运行它

代码语言:javascript
复制
sshpass -p *** ssh addressOfServer ssh computer01 ~/path/to/my/script.sh
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51255735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档