Linux 在shell中,检查/bin/sh的符号链接

Linux 在shell中,检查/bin/sh的符号链接,linux,shell,Linux,Shell,在Shell脚本中,如何检查/bin/sh是否软链接到破折号或bash,我可能有/bin/sh->dash或/bin/sh->bash您可以使用此命令打印符号链接指向的文件名: readlink -f $(command -v sh) 或者使用stat命令: stat -c '%N' $(command -v sh) 通常,顺便说一句,即使/bin/sh链接到bash,您的代码也应该像链接到dash一样工作。Bash不承诺在sh名称下调用时提供比最低限度的POSIX sh功能更多的功能[尽管

在Shell脚本中,如何检查
/bin/sh
是否软链接到
破折号或
bash
,我可能有
/bin/sh->dash
/bin/sh->bash
您可以使用此命令打印符号链接指向的文件名:

readlink -f $(command -v sh)
或者使用
stat
命令:

stat -c '%N' $(command -v sh)

通常,顺便说一句,即使
/bin/sh
链接到bash,您的代码也应该像链接到dash一样工作。Bash不承诺在
sh
名称下调用时提供比最低限度的POSIX sh功能更多的功能[尽管在实践中它确实提供了,但在不同版本中有所不同],因此任何使用
#的脚本都是如此/bin/sh
shebang应该编写为仅使用该功能就可以正常工作。谢谢Charles,是的,这是重复的,对不起,另一个答案帮助了我。顺便说一句,这也与能够在没有
readlink
的情况下使用
readlink
做什么有关(包括各种回退实现,包括GNU
find
perl
,甚至最终是
ls-l
)。
哪个
超过了
command-v
?(后者实际上是当前POSIX强制要求的;前者只是…经常可用,AFAIK)。关于
command-v
的好观点(编辑)…嗯。我想知道我是否应该将
stat-c
添加到。OTOH,任何带有GNU stat的平台大概也会有GNU find,因此已经包含在内。是的,如果GNU
stat
可用,那么
find
应该可用。