当前的POSIX规范未为.
内置点指定任何选项。
如果我做类似的事情:
$ echo 'echo .' > /tmp/-foo
$ PATH=/tmp "$shell" -c '. -foo'
然后结果在外壳之间是不同的:
dash
,ash
,ksh88
,Bourne shell中,席利SH,席利奥什传家宝SH工作做好。bash
,yash
,ksh93
,pdksh
,mksh
,posh
没有。将命令更改为. -- -foo
可在这些shell中工作。而且,使用--
是一种不兼容的方式,因为POSIX规范说不符合实用程序语法准则的内置函数将被忽略--
。
zsh
是唯一适用于这两种情况的外壳。
那么,如何. filename
在类似Bourne或POSIX的外壳中可靠地工作?
为避免依赖于外壳的效果,请将完整路径传递给.
。. /absolute/path/to/script
并. relative/path/to/script
在所有外壳中工作
无论如何,PATH查找对于源脚本很少有用。如果您确实要进行PATH查找,则可以手动进行查找,以防文件名以开头-
。或者,您可以要求文件名不以开头-
,以保持简单。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句