Function 当我打开终端时,shell脚本函数始终显示globurl=noglob urlglobber

Function 当我打开终端时,shell脚本函数始终显示globurl=noglob urlglobber,function,shell,unix,oh-my-zsh,Function,Shell,Unix,Oh My Zsh,也许答案是肯定的,但我已经在互联网上查了一段时间,我不知道为什么会发生这种情况 我在shell中有这个函数 alias google= function google(){ if [[ -n "$@" ]] then echo "you typed $1" fi } 现在我正在测试。我想在终端上创建我自己的谷歌搜索。代码正在运行,但每次我打开终端时,它都会显示以下消息: you typed globurl=no

也许答案是肯定的,但我已经在互联网上查了一段时间,我不知道为什么会发生这种情况

我在shell中有这个函数

alias google= function google(){
        if [[ -n "$@" ]] 
        then
                echo "you typed $1"

        fi
}
现在我正在测试。我想在终端上创建我自己的谷歌搜索。代码正在运行,但每次我打开终端时,它都会显示以下消息:

you typed globurl=noglob urlglobber   
为什么总是给我看这个?我是不是错过了一步?我不太习惯使用shell代码,所以这可能真的很愚蠢

顺便说一句,我正在与ZSH合作

错误原因 您收到此消息的原因是,您实际上正在使用函数覆盖内置的
别名
zsh
允许只需在
()
之前指定多个名称,即可创建具有多个名称的函数。例如:

foo bar baz () {
    echo $0 $@
}
这定义了三个(相同的)函数,分别命名为
foo
bar
baz
。运行代码段时:

alias google= function google(){
  # [...]
}
您还定义了三个函数:
alias
google=
google
<代码>函数
不会被覆盖,因为它是一个
zsh
保留字,但它也不能作为命令使用,因为它不在第一位

因此,配置中的以下(或非常类似)行实际上并不是通过运行内置的
别名来定义别名:

alias globurl="noglob urlglobber"
相反,函数
alias
globurl=“noglob urlglobber”
作为第一个参数运行

解决方案 创建函数时,不需要别名。请尝试以下方法:

function google () {
    if [[ -n "$@" ]] 
    then
        echo "you typed $1"
    fi
}

我想要的是在我的终端上键入google,然后执行这个函数。如果没有别名,我将无法调用它