在其他地方,我看到了cd功能,如下所示:
cd()
{
builtin cd "$@"
}
为什么建议使用$@
而不是$1
?
我创建了一个测试目录“ r st”,并调用了包含此功能的脚本,无论哪种方式都可以工作
$ . cdtest.sh "r st"
但是$ . cdtest.sh r st
无论我使用"$@"
还是失败"$1"
因为,根据bash(1)
,cd
带参数
cd [-L|[-P [-e]] [-@]] [dir]
Change the current directory to dir. if dir is not supplied,
...
因此目录实际上可能不在目录中,$1
因为目录可以是诸如-L
或另一个标志之类的选项。
这有多糟?
$ cd -L /var/tmp
$ pwd
/var/tmp
$ cd() { builtin cd "$1"; }
$ cd -L /var/tmp
$ pwd
/home/jhqdoe
$
如果您最终无法使用cd "$1"
…进行操作,事情可能会变得很糟糕。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句