exi*_*t_1 6 unix bash shell aix
我正在阅读 /bin/sh 和 /bin/bash 之间的差异,并遇到了这个有趣的问题/答案:here
我对在我的标题中提出同样问题的答案发表了评论,他回复了更新的答案:
如何找出系统上 /bin/sh 指向的内容?
复杂的是 /bin/sh 可能是符号链接或硬链接。如果它是符号链接,则解决它的可移植方法是:
> % file -h /bin/sh
> /bin/sh: symbolic link to bash
Run Code Online (Sandbox Code Playgroud)
如果是硬链接,请尝试
> % find -L /bin -samefile /bin/sh
> /bin/sh
> /bin/bash
Run Code Online (Sandbox Code Playgroud)
我尝试了这个,但遇到了麻烦,所以我想我应该提出一个单独的问题。
我从链接答案得到的结果:
>file -h /bin/sh
>/bin/sh: executable (RISC System/6000) or object module
>find -L /bin -samefile /bin/sh
>find: bad option -samefile
Run Code Online (Sandbox Code Playgroud)
我缺少什么?我正在运行 AIX:
>oslevel -s
7100-03-03-1415
Run Code Online (Sandbox Code Playgroud)
正如您评论的答案所说,-samefile这不是 的标准功能find。也不是-inum,它根据明确给定的索引节点号进行搜索。但如果你find支持的话,就使用它。
POSIXls支持-i,它打印 inode 编号。如果find没有-inum,您需要做的就是浏览所有可能的文件,这些文件/bin/sh可能是与...的硬链接
不过在此之前,您可以检查文件是否有任何其他硬链接,ls -l需要显示链接数量:
$ ls -l /bin/bash
-rwxr-xr-x 1 root root 1029624 Nov 5 23:22 /bin/bash
^ here
Run Code Online (Sandbox Code Playgroud)
当然,不需要/bin/sh链接到任何东西。它可能只是另一个程序。(甚至是其他一些文件的相同副本,尽管我认为这不太可能。)