【问题标题】:shell script function always shows globurl=noglob urlglobber when I open the terminal当我打开终端时,shell 脚本函数总是显示 globurl=noglob urlglobber
【发布时间】:2017-03-15 09:09:57
【问题描述】:

可能已经回答,但我已经在互联网上查看了一段时间,但我无法弄清楚为什么会发生这种情况。

我在shell中有这个功能

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

        fi
}

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

you typed globurl=noglob urlglobber   

为什么总是给我看这个?我错过了一些步骤吗?我不习惯使用 shell 代码,所以可能真的很傻

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

【问题讨论】:

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

标签: function shell unix oh-my-zsh


【解决方案1】:

错误原因

您收到此消息的原因是,您实际上是用您的函数覆盖了内置的aliaszsh 允许通过在 () 之前提供多个名称来创建具有多个名称的函数。例如:

foo bar baz () {
    echo $0 $@
}

这定义了三个(相同的)函数,名为 foobarbaz。当你运行你的代码 sn-p:

alias google= function google(){
  # [...]
}

您还定义了三个函数:aliasgoogle=googlefunction 没有被覆盖,因为它是 zsh 保留字,但它也不能作为命令工作,因为它一开始就没有。

因此,您的配置中的以下(或非常相似的)行实际上并没有通过运行 builtin alias 来定义别名:

alias globurl="noglob urlglobber"

函数 aliasgloburl="noglob urlglobber" 作为第一个参数运行。

解决方案

创建函数时不需要别名。试试这个:

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

【讨论】:

    猜你喜欢
    • 2019-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-04
    • 2012-11-18
    • 2023-01-29
    • 2013-07-29
    相关资源
    最近更新 更多