大佬教程收集整理的这篇文章主要介绍了为什么/ bin / sh的行为与/ bin / bash有所不同,即使一个指向另一个?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
bash
查看$argv[0]
(bash在C语言中实现)的值,以确定如何调用它。
当作为调用它的行为sh
被记录在手册中:
bash
在POSIX模式下,一长串(目前有46项)更改的内容在此处记录。
(POSIX模式可能最有用,它是测试脚本是否可移植到非bash
sHell的一种方法。)
顺便说一句,根据调用它们的名称更改其行为的程序是相当普遍的。有些版本grep
,fgrep
以及egrep
作为一个可执行实现(虽然GNUgrep
并没有这样做)。vIEw
通常是指向vi
或的符号链接vim
;调用它作为vIEw
导致以只读模式打开的原因。所述Busybox的系统包括许多与所有符号链接到主各个命令的busyBox
可执行文件。
当我在外壳中研究这个问题的答案时,我注意到,即使/bin/sh
指向/bin/bash
系统上的两个命令,它们的行为也有所不同。首先,输出
ls -lh /bin/sh
是:
lrwxrwxrwx 1 root root 4 Apr 22 2013 /bin/sh -> bash*
但是,@R_744_6749@调用以下命令/bin/sh
:
/bin/sh -c "script.sh 2> >( grep -v FILTER 2>&1 )"
返回此错误:
/bin/sh: -c: line 0: syntax error near unexpected token '>'
/bin/sh: -c: line 0: 'script.sh 2> >( grep -v FILTER 2>&1 )'
通过/bin/bash
以下命令运行相同命令时:
/bin/bash -c "script.sh 2> >( grep -v FILTER 2>&1 )"
成功执行,以下是输出:
This should be on stderr
供参考,以下是以下内容script.sh
:
#!/bin/sh
echo "FILTER: This should be filtered out" 1>&2
echo "This should be on stderr" 1>&2
echo "FILTER: This should be filtered out" 1>&2
为什么两个调用的行为不同?
以上是大佬教程为你收集整理的为什么/ bin / sh的行为与/ bin / bash有所不同,即使一个指向另一个?全部内容,希望文章能够帮你解决为什么/ bin / sh的行为与/ bin / bash有所不同,即使一个指向另一个?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。