ioerror

tcsh 사용법 및 옵션 - C 셸(csh)의 기능을 확장한 대화형 컴파일러형 유닉스 셸 본문

OS

tcsh 사용법 및 옵션 - C 셸(csh)의 기능을 확장한 대화형 컴파일러형 유닉스 셸

반응형

tcsh - TENEX C shell

tcsh - TENEX C shell

기존 C 셸(csh)과의 완전한 호환성을 유지하면서 명령행 편집, 파일명 및 명령어 자동 완성, 프로그래밍 편의 기능을 대폭 추가한 상위 확장 버전이다. C 언어 문법과 유사한 스크립트 구문을 제공하여 C 프로그래머에게 친숙한 환경을 제공하며, 대화형 작업 환경에서 뛰어난 편의성을 제공한다. FreeBSD 등 일부 BSD 계열 OS에서는 기본 셸로 채택되어 사용된다. 대화형 셸로는 강력하지만 Bourne 셸(sh/bash) 계열과 스크립트 문법 구조가 상이하여 대규모 시스템 관리 스크립트 작성 시 호환성에 유의해야 한다.

1. 명령어 용도

  • C 언어 스타일의 구문을 활용한 대화형 작업 환경 구축
  • 고급 명령행 편집, 히스토리 검색, 자동 완성을 통한 효율적 터미널 제어
  • csh 기반 기존 레거시 시스템 스크립트의 실행 및 유지보수
Bash
 
# 기본 tcsh 대화형 셸 세션 시작 (StackOverflow 최다 질의 패턴)
tcsh

# 로그인 셸 환경으로 tcsh 실행
tcsh -l

# 특정 csh/tcsh 스크립트 파일을 비대화형으로 실행
tcsh script.csh

2. 명령어 서식

Bash
 
tcsh [옵션] [인자...]

3. 명령어 옵션

옵션 설명 사용가능 OS 및 쉘
-b 명령어 옵션 해석을 중단하고 이후 인자들을 스크립트 위치 인자로 처리 ALL
-c 단일 문자열로 전달된 명령어를 실행 후 즉시 종료 ALL
-d 설정 파일(.tcshrc 등)을 로드하지 않고 기본 상태로 실행 ALL
-e 실행 중인 명령어가 0이 아닌 반환값을 반환하면 스크립트 즉시 종료 ALL
-f 자식 프로세스 생성 시 설정 파일(.tcshrc) 로딩 과정을 건너뛰어 빠른 실행 ALL
-i 표준 입력 장치 유무와 상관없이 대화형(Interactive) 셸 모드로 강제 실행 ALL
-l 로그인 셸(Login Shell)로 동작하도록 하여 전체 환경 변수 및 프로필 로드 ALL
-m 존재하지 않는 환경 파일 로드 시 발생하는 오류를 무시 [FreeBSD] [GNU Linux]
-n 구문 오류만 검사하고 실제 명령어를 실행하지 않음 (문법 검사용) ALL
-s 표준 입력으로부터 명령어를 읽어들여 처리 ALL
-t 표준 입력으로부터 단 한 줄의 명령어만 읽어 실행 ALL
-v 읽어들인 모든 명령어를 실행 전에 표준 출력으로 표시 (verbose) ALL
-x 실행되는 실제 모든 명령어와 인자를 확장하여 표시 (trace) ALL
-V 설정 파일 로딩 전부터 verbose 옵션을 활성화 ALL
-X 설정 파일 로딩 전부터 trace 옵션을 활성화 ALL
--version tcsh 버전 및 빌드 설정 정보를 출력 후 종료 [GNU Linux] [macOS]
 
Bash
 
# tcsh 구문 검사 및 스크립트 실행 트레이스 예시
tcsh -x ./test_script.csh
# set env_var = 100
# echo "Current value is 100"
# Current value is 100
# exit 0
  • ./test_script.csh: tcsh 제어 구문으로 작성되어 실행 대상이 되는 스크립트 파일
  • set env_var = 100: -x 옵션에 의해 실제 내부 변수 할당 단계가 확장되어 출력된 결과
  • echo "Current value is 100": 트레이스 모드에서 실행 직전 해석된 명령어 출력
  • Current value is 100: 명령어가 실제로 실행되어 터미널에 출력된 최종 결과값

4. 명령어 특이사항(유의사항)

Stack Overflow에서 주로 다루어지는 핵심 주의사항은 Bourne 셸(bash, zsh 등)과의 리다이렉션 문법 차이이다. 표준 에러(stderr)를 파일로 리다이렉션할 때 bash에서는 2> file 구문을 사용하지만, tcsh에서는 >& file 또는 (command > file1) >& file2 형식을 사용해야 한다. 또한 if 문이나 loop 구문 등 제어 흐름 문법이 POSIX 표준 sh 계열과 완전히 달라 bash 스크립트와의 직접적인 호환성이 제공되지 않으므로, 범용 시스템 자동화 스크립트 작성 시에는 #!/bin/sh 또는 #!/bin/bash 사용이 권장된다.

관련 명령어들

  • csh: tcsh의 기반이 되는 원조 C 셸
  • bash: Bourne-Again SHell, 대부분의 리눅스 배포판 기본 셸
  • zsh: Z shell, 강력한 완성과 테마 기능을 제공하는 모던 셸
  • chsh: 로그인 시 기본으로 적용할 셸(Shell) 변경 명령어

https://ioerror.tistory.com/entry/UNIX-Linux-Command-Reference

 

UNIX & Linux Command Reference

유닉스 / 리눅스 명령어 표유닉스와 리눅스 환경에서 자주 사용되는 필수 명령어들을 완벽하게 정리한다. 서버 관리, 프로그래밍, 일상적인 시스템 운영 등 어떤 목적이든 터미널 환경을 능숙하

ioerror.tistory.com

 

 

 

반응형
Comments