我使用Ubuntu(亚马逊EC2),当我键入cd
,出现这种情况:为什么cd可以调用函数':'?
$ cd
hi
hi
hi
hi
hi
hi
hi
hi
hi
$
我以前曾提出:是一个函数::() { echo hi; }
这发生在顶级shell $SHLVL=1
,但不在任何子shell中(键入bash
然后尝试重现此操作不起作用)。
有谁知道为什么会发生这种情况?
我使用Ubuntu(亚马逊EC2),当我键入cd
,出现这种情况:为什么cd可以调用函数':'?
$ cd
hi
hi
hi
hi
hi
hi
hi
hi
hi
$
我以前曾提出:是一个函数::() { echo hi; }
这发生在顶级shell $SHLVL=1
,但不在任何子shell中(键入bash
然后尝试重现此操作不起作用)。
有谁知道为什么会发生这种情况?
你所做的是一个非常糟糕的主意,因为:
是shell命令。
在需要命令的结构中不时会很有用。举例来说,如果你想代码中使用while
一个无限循环,它可以帮助:
while true ; do
:
done
取出:
并且它没有很好地形成更多:do
需要一个命令。出了以下三个单行的,只有最后一个是正确的—试戴:
while true do done
while true do ; done
while true do : ; done
如果你重新定义:
作为一个功能,一个很好的问题是:是,明确界定?但不要介意,假设它有效。突然间,这些不时出现在脚本中的:
将会调用你的函数!
Amazon EC2 shell环境中的cd
是什么?也许这是一个功能。输入set
并浏览输出。我经常定义一个自定义的cd
函数;这很有用。您可以执行诸如动态更新提示和窗口标题等内容。
'cd'确实被定义为'set'所示的函数。我看不清如何调用':',但我没有检查整个输出。谢谢您的回答。 –
“我以前做过:做个功能”......我敢问为什么? – ceejayoz
@ceejayoz可能是因为LDP [提到你可以!](http://www.tldp.org/LDP/abs/html/functions.html);) – Arjan
'cd'是一个函数吗?是否设置了“PROMPT_COMMAND”?请用'set -x'再次运行上面的代码并提供输出。 – kojiro