【问题标题】:In shell, check what /bin/sh is symlinked to [duplicate]在 shell 中,检查 /bin/sh 符号链接到的内容 [重复]
【发布时间】:2016-09-22 05:45:56
【问题描述】:

在 Shell 脚本中,我如何检查 /bin/sh 是否软链接到 dashbash,我可能有 /bin/sh -> dash/bin/sh -> bash

【问题讨论】:

  • 总的来说,顺便说一句,即使/bin/sh 链接到 bash,您的代码也应该像链接到 dash 一样工作。当在sh 名称下调用时,Bash 不承诺提供比最低 POSIX sh 功能更多的功能[尽管在实践中确实如此,在一定程度上因版本而异],因此任何使用#!/bin/sh shebang 的脚本都应该编写仅使用该功能即可正常运行。
  • 谢谢查尔斯,是的,它是重复的,对不起,其他答案对我有帮助。
  • stackoverflow.com/questions/31596363/…,顺便说一句,也与 readlink 在没有实际拥有 readlink 的情况下能够做到的事情有关(包括各种后备实现,包括 GNU findperl,甚至最终ls -l)。

标签: linux shell


【解决方案1】:

您可以使用此命令打印符号链接指向的文件名:

readlink -f $(command -v sh)

或使用stat 命令:

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

【讨论】:

  • which 超过 command -v? (后者实际上是当前 POSIX 规定的;前者只是......经常可用,AFAIK)。
  • 关于command -v 的好点(已编辑)
  • ...嗯。我想知道是否应该将stat -c 添加到stackoverflow.com/questions/31596363/…。 OTOH,任何具有 GNU stat 的平台可能也会有 GNU find,因此已经被覆盖。
  • 是的,如果 gnu stat 可用,find 确实应该可用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-09-17
  • 1970-01-01
  • 2016-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多