bash 와 dash의 차이점

오늘도 역시나 뻘짓을 하였다. bash script를 짜놓고 sh a.sh 같은 식으로 실행시키니 우분투에서 sh는 dash를 기본적으로 가리키므로 dash에 의해 a.sh가 실행이 되어서 예상치 못한 결과가 나왔다. 덕분에 시간을 날렸지만 아래와 같은 사실을 알 수 있었당~


 

bash와 dash는 공통적으로 \(역슬래쉬) 를 특수하게 사용한다. 따라서 문자자체로서의 역슬래쉬를 표현하려면 \\을 사용해야한다. 
따라서 bash에서의 결과는 상식적인 결과일 것이다.
dash에서도 역슬래쉬를 표현하여면 \\를 사용해야하는 건 똑같다. 하지만 dash 에서는 큰따옴표안에서 이스케이프문자를 지원한다. 무슨 말이냐면 결론적으로 echo "\\\\" 를 해야 화면에 \이 출력되는 것이다. \\이 \로 처리되고 그렇게 모인 두개의 \\가 이스케이프문자로 인식되 \ 하나가 결국 출력되는 것이다.


이 사진은 보던지 말던지~

* 그리고 `` 보다 $() 를 사용하도록 하자!


bash script가 정말 리눅스환경에서 간단간단하게 뭐 만들때 정말 좋긴한데 문법이 너무 거지같은거 같다.
어쩌면 내가 체계적으로 안배우고 그때 그때 검색해서 쓰는 식으로 익혀서 그런거일수도...

댓글