우분투 9.10에서 bash 스크립트를 실행할 때 root로서 실행 중인지 여부에 따라 bash echo의 "-e"옵션과 다른 동작을합니다.echo -e는 우분투의 root 스크립트에서 실행할 때 다르게 동작합니다.
$ sudo ./echo-test
Running as root
Testing /bin/echo -e
foo
bar
Testing bash echo -e
-e foo
bar
: 루트로 실행하면
$ ./echo-test
Testing /bin/echo -e
foo
bar
Testing bash echo -e
foo
bar
, 나는이 출력을 참조하십시오
루트가 아닌 사용자로 실행$ cat echo-test
if [ "`whoami`" = "root" ]; then
echo "Running as root"
fi
echo Testing /bin/echo -e
/bin/echo -e "foo\nbar"
echo Testing bash echo -e
echo -e "foo\nbar"
, 나는이 출력을 참조하십시오
이 스크립트를 고려마지막 사례에서 "-e"가 표시됩니다 (두 번째 줄부터 마지막 줄까지 "foo"대신 "-e foo"). 스크립트를 루트로 실행하면 echo 명령은 "-e"가 주어진 것처럼 실행되고 -e가 주어지면 옵션 자체가 표시됩니다.
/bin/echo와 bash echo 사이의 동작에 미묘한 차이가 있음을 이해할 수 있지만 bash echo는 사용자가 호출 한 것과 상관없이 동일하게 동작 할 것으로 기대합니다.
왜 이런 경우인지 아시겠습니까? 이것은 bash echo의 버그입니까?
참고 - 나는 GNU bash는 버전 4.0.33 (1) -release (x86_64에-PC-리눅스 GNU)를 실행하고있어
#!/bin/bash가 맨 위에 고정됩니다. 따라서 root는 다른 echo를 가진 다른 쉘을 사용해야합니다. 그건 의미가 있습니다. 감사합니다. – user353172