우분투의 기본 쉘이 bash가 아니었네요.

쉘 스크립트를 가지고 노는(?)중, 한가지 이상한점을 발견했었습니다.

echo 명령어로 글자를 출력할 때, 색상코드를 사용하기 위해서는 -e 옵션을 붙여줘야하는걸로 알고있습니다.
그래서 그대로 스크립트를 작성했는데 막상 실행시켜보니 옵션으로 써준 -e 가 그대로 출력되네요?
물론 색상코드는 적용 된 상태구요.

-e 를 지우면 원하는대로 출력이 됩니다. 그런데 이게 또 터미널상에서 명령어를 직접 쳐주면 결과가 다릅니다.

혹시나 싶어 스크립트의 쉘 지정하는 부분을 /bin/sh 에서 /bin/bash로 바꿔주니 터미널에서 입력한것과 같아지네요.

저는 그동안 /bin/sh 이 당연히 우분투 기본 쉘인 bash 쉘에 링크되어있는줄 알았는데
살펴보니 /bin/dash 에 링크가 되어 있네요.

이게 뭔가 찾아보니 Debian Almquist Shell 이라고(읽기도 어렵네요;:wink: 데비안에서 bash를 경량화해서 만든
쉘이라는군요.
이 때문에 레드햇 계열 리눅스와 프로그램에서 간혹 호환성 문제가 있다고 합니다.
우분투에는 6.10버전 부터 적용됐다고 하니 제가 우분투에 우 자도 모르던 시절이네요.

대부분 리눅스 서적에도 일반적으로 리눅스는 로그인 쉘로 bash를 사용한다고 나와있어서 이런게 있는지도 몰랐습니다.

새로운걸 또 하나 알게되니 즐겁네요 :D

6.10(옛날 부터) 그렇게 바뀌었다고 하네요

https://wiki.ubuntu.com/DashAsBinSh

[quote="echidna":l65sija2]쉘 스크립트를 가지고 노는(?)중, [/quote:l65sija2]

부럽습니다. "초"자 떼려고 잘 시간 줄여가며 공부중인데, 쉘스크립트가 날 가지고 노는 중입니다 !

[quote="제이원":3jjip9am][quote="echidna":3jjip9am]쉘 스크립트를 가지고 노는(?)중, [/quote:3jjip9am]

부럽습니다. "초"자 떼려고 잘 시간 줄여가며 공부중인데, 쉘스크립트가 날 가지고 노는 중입니다 ![/quote:3jjip9am]

[url:3jjip9am]http://ubuntu.or.kr/viewtopic.php?f=6&t=18142[/url:3jjip9am]
저도 사실 이정도 수준이에요… 참고자료 없으면 그냥 화면에 메시지 출력하는게 한계랍니다 :D

[quote="echidna":yyl6aaj6]쉘 스크립트를 가지고 노는(?)중, 한가지 이상한점을 발견했었습니다.

echo 명령어로 글자를 출력할 때, 색상코드를 사용하기 위해서는 -e 옵션을 붙여줘야하는걸로 알고있습니다.
그래서 그대로 스크립트를 작성했는데 막상 실행시켜보니 옵션으로 써준 -e 가 그대로 출력되네요?
물론 색상코드는 적용 된 상태구요.

-e 를 지우면 원하는대로 출력이 됩니다. 그런데 이게 또 터미널상에서 명령어를 직접 쳐주면 결과가 다릅니다.
[/quote:yyl6aaj6]

-e가 색생코드를 사용하기 위한 옵션이었나요? 제가 알기로는 백슬래시 문자 (예, \n)를 사용하기 위한 옵션으로 알고있는데요…
맨 페이지에도 -e enable interpretation of backslash escapes 라고 적혀있거든요…
안시코드는 -e 옵션과 상관없이 사용할 수 있습니다. 터미널에서 echo "\033[31mHi" 라고 쳐보시면 결과를 보실 수 있을 겁니다.

[quote="Seony":d0oqej75]-e가 색생코드를 사용하기 위한 옵션이었나요? 제가 알기로는 백슬래시 문자 (예, \n)를 사용하기 위한 옵션으로 알고있는데요…
맨 페이지에도 -e enable interpretation of backslash escapes 라고 적혀있거든요…
안시코드는 -e 옵션과 상관없이 사용할 수 있습니다. 터미널에서 echo "\033[31mHi" 라고 쳐보시면 결과를 보실 수 있을 겁니다.[/quote:d0oqej75]
안시코드 포함해서 백슬래시 이스케이프 문자를 사용하려면 -e 옵션을 붙여야 됩니다.
안하면 그냥 \033[31mHi 라고 그대로 출력됩니다.
추가적으로 설정해두신게 아닌지… 저도 초보라 구글링해서 나온거 배끼는 정도밖에 못해요…