我在Linux Ubuntu中有以下bash脚本,它打开一个带有多个选项卡的新终端,并在每个选项卡中执行ssh
命令来访问远程路由器:
#!/bin/bash
gnome-terminal --tab -e "ssh root@172.16.17.4" --tab -e "ssh root@172.16.17.5"
在bashrc文件中,我已经包含了以下别名命令的定义:
alias router4='ssh root@172.16.17.4'
alias router5='ssh root@172.16.17.5'
当我使用这些别名命令替换第一个脚本中的完整ssh
命令时,每个选项卡都会出现以下错误:
为此终端创建子进程时出错
无法执行子进程" router6" (没有这样的文件或目录)
如何解决这个问题?
注意:当我在一个手动打开的标签页中执行以前的别名命令时,它们可以正常运行。
答案 0 :(得分:1)
您可以尝试从别名切换到.bashrc
中的功能。根据bash的文档,在大多数情况下,函数比别名更好。在您的情况下,由于您没有将bash作为登录环境运行,因此它可能会更好。将其添加到您的.bashrc
并注释掉别名:
router4() {
/usr/bin/ssh root@172.16.17.4
}
如果这不起作用,您可以尝试在定义router4之后在export -f router4
中添加.bashrc
。
答案 1 :(得分:0)
您需要通过bash
执行它:
gnome-terminal --tab -e "bash -c router4"