질문은 저 밑에 잇지만. 못보실까봐 여기다 적습니다.
csh 이 sh 게열 (sh, ksh, bash) 보다 shell 스크립트에 약한 이유는 근본적으로
설계가 잘못 되어 있기 때문이죠.
몇가지만 예를 들자면...
1. file descriptor
csh은 sh 처럼 file descriptor를 마음대로 사용하지 못합니다. sh계열에서는 간단
하게 처리 할 수 있는 것도 csh에서는 힘들거나 아예 할 수가 없는 경우가 많죠.
예.)
* stderr 는 모두 무시하고 stdout만 보고 싶을때..
sh -> cmd 2> /dev/null
csh -> 방법 없음.
* shell 스크립트 내부에서 에러 메세지를 stderr로 보내기.
sh -> echo "$0: cannot find $file" 1>&2
csh -> sh -c "echo '${0}: cannot file $file' 1>&2" (sh 를 이용했다.)
* csh에서 tty에서 한 라인을 읽어 들이는 방법은 $< 가 있지만 stdin 을 리다이렉
트해도 여전히 tty에서 입력을 받으려고 한다.
* csh에서는 열려진 file descriptor를 닫을 수가 없다. sh에서는 exec 명령으로 열
린 file descriptor를 >&- 로 닫을수 있다.
2. 비정상적인 명령어.
예.)
* 내장 명령어.
csh의 내장명령어는 어떠한 정상적인 방법으로도 함께 조합하여 쓸수 없다.
* 흐름제어와 명령어를 함께 쓸 수 없다.
who | while read line ; do
echo $line
done
이런 것은 csh에서 되지 않는다.
* 여러 라인으로 구성된 구문을 세미콜론을 이용하여 묶을 수 없다.
* 명령어 파싱 버그
kill -1 `cat foo` (x)
/bin/kill -1 `cat foo` (o)
3. 시그널
csh은 sigint 만 trap 할 수 있다.
그 밖에도 여러가지가 많은데요. 이 정도만 쓰죠.
위의 예는 모두 unix power tools라는 책에서 인용한 것 입니다.--껌을 씹을 때는 조용히...