Gyedo at TiStory

저희 회사에서는 linux에서 tcsh을 쓰고 있습니다. 맥에서 bash prompt에 git branch를 표시하고 사용하고 있어서 회사 컴퓨터에서도 그렇게 하려고 어제 삽질을 좀 했는데요.

tcsh에서 stderr와 stdout이 분리가 안된다는 것을 이제야 알게 됐네요.

문제는 git branch를 알아내기 위한 명령이 git repository가 아닌 디렉토리에서 실행될 때, stderr로 에러 메시지가 출력되거든요.

bash에서라면 아래처럼  2>를 사용해서 stderr는 /dev/null로 redirect 시켜버리면 간단히 피할 수 있는데





tcsh에서는 그게 안되다보니 이렇게 편법을 쓰게 됐습니다. 문제는 그게 안되는 걸 깨닫는데 너무 오랜 시간을 허비... TT




tcsh에서는 stdout, stderr 둘다를 >&를 사용해서 redirect할 수는 있어서 처음에 git rev-parse 명령의 결과를 /dev/null로 redirect 한 뒤에, 가장 최근 수행된 명령의 exit code를 담고 있는 $status 변수의 값을 체크해서 git repository 안에 있는지 밖에 있는지에 따라 git branch 명령을 수행하게 한거에요.