Bash shell:command是否可移植?

Bash shell:command是否可移植?,bash,shell,null,zsh,csh,Bash,Shell,Null,Zsh,Csh,是否建议在假定可移植的脚本上使用shell的:null命令?它是否能处理csh、zsh、tcsh以及周围可能存在的任何外壳?是的。这是标准的空实用程序。参考资料:当然,内置的:早在1975年就已经存在了。这比诸如PATH变量、使用2>重定向stderr以及cd命令(然后拼写为chdir)等常用功能都要旧 在Thompson shell中,:表示命令的标签。如果您从未尝试在以:开头的行上调用goto,则该行实际上是一条注释。我们所知道的Bourne/POSIX Shell的祖先从未有过我所知道的g

是否建议在假定可移植的脚本上使用shell的
null命令?它是否能处理csh、zsh、tcsh以及周围可能存在的任何外壳?

是的。这是标准的空实用程序。参考资料:

当然,内置的
早在1975年就已经存在了。这比诸如
PATH
变量、使用
2>
重定向stderr以及
cd
命令(然后拼写为
chdir
)等常用功能都要旧


在Thompson shell中,
表示命令的标签。如果您从未尝试在以
开头的行上调用
goto
,则该行实际上是一条注释。我们所知道的Bourne/POSIX Shell的祖先从未有过我所知道的
goto
,但保留了
作为一个no-op命令(它已经存在于中)。

tcsh和csh拥有它(以及其他命令)。大多数人会接受无意义的参数,但csh中的
拒绝。但这只是另一个问题。顺便说一句,bash并没有完全遵守POSIX规范的
,除非用
bash--POSIX
实例化它。对于not
POSIXLY\u STRICT
bash,
存在,但不会导致变量赋值持久化。在讨论shell可移植性时,询问csh是否有意义?csh是如此的不同,以至于试图制作一个脚本,在csh和BourneShells中做任何有用的工作似乎都是徒劳的。(编写一个在csh中做任何有用的事情的脚本似乎都是徒劳的,但这完全是另一回事。)虽然POSIX称它为“实用程序”(这对我来说意味着它在shell外部),但它实际上是我检查过的所有shell(包括)中的一个内置脚本,它不在文件系统中(至少在我的文件系统上)“@DennisWilliamson”“实用性”这个词并不是以某种方式暗示着内置性。Bash和ksh表示,他们符合IEEE 1003.1的Shell和实用程序部分,但除了
Bash
ksh
本身之外,他们基本上不会创建其他可执行文件,因此,为了符合要求,他们必须将这些实用程序内置。@DennisWilliamson:本节中的特殊内置实用程序不需要以可通过IEEE Std 1003.1-2001系统接口卷中定义的exec函数系列访问的方式提供。(帽子提示:Freenode/#bash上的PGA)