shell 当我打开终端时,脚本函数总是显示 globurl=noglob urlglobber
shell script function always shows globurl=noglob urlglobber when I open the terminal
可能已经回答了,但我已经在互联网上查看了一段时间,但我无法弄清楚为什么会这样。
我在shell
中有这个功能
alias google= function google(){
if [[ -n "$@" ]]
then
echo "you typed "
fi
}
现在我正在测试。我想在终端上创建自己的 google 搜索。代码可以正常工作,但每次我打开终端时,总是会出现以下消息:
you typed globurl=noglob urlglobber
为什么总是给我看这个?我错过了一些步骤吗?我不习惯使用 shell 代码,所以可能真的很傻
顺便说一句,我正在使用 ZSH
错误原因
您收到此消息的原因是,您实际上是在用您的函数覆盖内置 alias
。 zsh
允许通过在 ()
之前给出多个名称来创建具有多个名称的函数。例如:
foo bar baz () {
echo [=10=] $@
}
这定义了三个(相同的)函数,名称为 foo
、bar
和 baz
。当您 运行 您的代码片段时:
alias google= function google(){
# [...]
}
您还定义了三个函数:alias
、google=
和 google
。 function
没有被覆盖,因为它是一个 zsh
保留字,但它也不能用作命令,因为它不是首先出现的。
因此,您配置中的以下(或非常相似的)行实际上并未通过 运行 宁 builtin alias
alias
:
alias globurl="noglob urlglobber"
相反,函数 alias
是 运行,第一个参数是 globurl="noglob urlglobber"
。
解决方案
创建函数时不需要别名。试试这个:
function google () {
if [[ -n "$@" ]]
then
echo "you typed "
fi
}
可能已经回答了,但我已经在互联网上查看了一段时间,但我无法弄清楚为什么会这样。
我在shell
中有这个功能alias google= function google(){
if [[ -n "$@" ]]
then
echo "you typed "
fi
}
现在我正在测试。我想在终端上创建自己的 google 搜索。代码可以正常工作,但每次我打开终端时,总是会出现以下消息:
you typed globurl=noglob urlglobber
为什么总是给我看这个?我错过了一些步骤吗?我不习惯使用 shell 代码,所以可能真的很傻
顺便说一句,我正在使用 ZSH
错误原因
您收到此消息的原因是,您实际上是在用您的函数覆盖内置 alias
。 zsh
允许通过在 ()
之前给出多个名称来创建具有多个名称的函数。例如:
foo bar baz () {
echo [=10=] $@
}
这定义了三个(相同的)函数,名称为 foo
、bar
和 baz
。当您 运行 您的代码片段时:
alias google= function google(){
# [...]
}
您还定义了三个函数:alias
、google=
和 google
。 function
没有被覆盖,因为它是一个 zsh
保留字,但它也不能用作命令,因为它不是首先出现的。
因此,您配置中的以下(或非常相似的)行实际上并未通过 运行 宁 builtin alias
alias
:
alias globurl="noglob urlglobber"
相反,函数 alias
是 运行,第一个参数是 globurl="noglob urlglobber"
。
解决方案
创建函数时不需要别名。试试这个:
function google () {
if [[ -n "$@" ]]
then
echo "you typed "
fi
}