在新打开的选项卡中执行别名命令

时间:2017-04-25 17:37:11

标签: linux bash terminal

我在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" (没有这样的文件或目录)

如何解决这个问题?

注意:当我在一个手动打开的标签页中执行以前的别名命令时,它们可以正常运行。

2 个答案:

答案 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"