shell脚本工作,别名失败。为什么?

时间:2013-05-22 16:50:26

标签: bash alias

我为ssh会话使用自定义gnome-terminal配置文件(不同的bg颜色提供了一个很好的视觉提示,我不在本地工作)。为什么我的别名不起作用?

这几乎可以工作,但终端窗口立即关闭。

alias myssh='gnome-terminal --window-with-profile=SSH -e "ssh $1"'

我尝试使用eval并混合引号,没有变化

alias myssh='eval gnome-terminal --window-with-profile=SSH -e "/usr/bin/ssh $1"'
alias myssh='gnome-terminal --window-with-profile=SSH -e \"/usr/bin/ssh $1\"'
alias myssh='eval gnome-terminal --window-with-profile=SSH -e \"/usr/bin/ssh $1\"'
alias myssh='gnome-terminal --window-with-profile=SSH -e \"/usr/bin/ssh $1\"'

别名到文件中的脚本效果很好。有什么区别?

alias myssh='$HOME/bin/myssh.sh'

file:$HOME/bin/myssh.sh
#!/bin/bash
gnome-terminal --window-with-profile=SSH -e "ssh $1"

2 个答案:

答案 0 :(得分:2)

在一个脚本中,你的论点是$ 1等。

别名几乎只是文字替换,即myssh foo只会转入

gnome-terminal --window-with-profile=SSH -e "ssh $1" foo

这显然是错误的。

只需将您的脚本添加到〜/ bin。

之类的内容中

答案 1 :(得分:2)

bash别名不接受参数。您可以改为定义shell函数:

myssh () {
    gnome-terminal --window-with-profile=SSH -e "ssh $1"
}