Почему / bin / sh ведет себя иначе, чем / bin / bash, даже если один указывает на другой?
Пока я играл в своей раковине, изучая ответэтот вопросЯ заметил это, хотя/bin/sh
указывал на/bin/bash
в моей системе две команды ведут себя по-разному. Прежде всего, вывод
ls -lh /bin/sh
является:
lrwxrwxrwx 1 root root 4 Apr 22 2013 /bin/sh -> bash*
Тем не менее, вызывая следующую команду через/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
Почему два вызова ведут себя по-разному?