나는 이것을 가지고있다:
$ echo $SHELL
/bin/sh
$ uname -a
FreeBSD 11.0-RELEASE-p8
이것은 작동합니다:
sudo bash my_script.sh some_arg
그러나 이것은 그렇지 않습니다:
sudo bash my_script.sh some_arg >& /dev/null
실수:
-sh: Syntax error: Bad fd number
이것은 bash가 기본 쉘인 Linux에서 잘 작동합니다.
어떻게 고치나요?
스크립트에는 다음이 있습니다.
#!/usr/local/bin/bash
# other stuff
답변1
bash
이것은 실제로 지원되지만 현재 쉘이 아니라 bash
다른 sh
쉘이라고 명시적으로 명시합니다.
답변2
bash
>&
하지만 그렇지 /bin/sh
않습니다(적어도 파일로 리디렉션하지 않음).
귀하의 명령줄은 다음과 같이 해석됩니다./bin/sh
앞으로sudo
및 에 전달됩니다 bash
.
이것을 테스트할 수는 없지만 (다른 쉘에서는 작동합니다) - 인용된 문자열을 사용하여 옵션을 bash
시도해 볼 수 있습니다 .-c
sudo bash -c "my_script.sh some_arg >& /dev/null"
답변3
올바른 구문은 다음과 같습니다.
sudo my_script.sh some_arg > /dev/null 2>&1