2P by neo 3달전 | favorite | 댓글 2개

사용자 정의 명령어 충돌 방지 방법

문제점

  • 사용자 정의 쉘 스크립트와 시스템 명령어 간의 이름 충돌 가능성
  • 특히 Debian과 같은 많은 명령어를 지원하는 시스템에서 충돌 가능성 증가

해결책

  • 사용자 정의 명령어 앞에 쉼표(,)를 붙여서 시스템 명령어와 구분
  • 쉼표는 파일 이름에서 특별한 의미가 없어서 안전하게 사용 가능

장점

  • 쉼표를 사용하면 명령어 충돌 방지
  • 탭 완성 기능을 통해 사용자 정의 명령어 목록을 쉽게 확인 가능

예시

$ ,«tab»
,complete-scp    ,go-thpgp      ,range
,complete-ssh    ,gr            ,svn-store-password
,coreoff         ,hss           ,umount
,coreon          ,mount-thpgp   ,find
,mount-twt

GN⁺의 의견

  • 이 방법은 사용자 정의 명령어와 시스템 명령어 간의 충돌을 효과적으로 방지할 수 있음.
  • 쉼표를 사용하는 것은 간단하면서도 강력한 해결책으로, 초급 엔지니어도 쉽게 적용 가능함.
  • 이 기법은 특히 많은 명령어를 사용하는 시스템에서 유용함.
  • 다른 방법으로는 명령어 앞에 특정 접두사를 붙이는 것도 고려할 수 있음.
  • 이 방법을 사용하면 명령어 관리가 더 체계적이고 효율적으로 이루어질 수 있음.
Hacker News 의견
  • "comma_nds"라는 이름이 재미있음. 좋은 아이디어라서 사용해볼 생각임.
  • 처음에는 별로일 것 같았지만, 특히 탭을 사용해 도구 목록을 나열하는 부분이 마음에 듦. 최근 네임스페이스 충돌이 거의 없었음.
  • 쉘 스크립트 이름이 짧고 간결해서 시스템 명령어와 충돌할 가능성이 있었음. $PATH의 앞에 bin 디렉토리를 두면 문제 해결 가능함.
  • Vim에서도 , 키가 많이 사용됨. 비슷한 이유로 자주 사용됨.
  • 문제를 잘 이해하지 못했지만, 자신의 명령어를 자동완성하는 아이디어는 좋음.
  • 짧은 커스텀 명령어를 사용함. 시스템 명령어와 충돌해도 상관없음. 충돌 시 다른 이름으로 별칭을 설정함.
  • Windows에서 Python 스크립트를 쉽게 실행할 수 있지만, Linux에서는 어려움. Linux는 연관 프로그램 개념이 없어서 불편함.
  • 충돌을 피하기 위해 긴 실행 파일 이름을 사용하고 짧은 별칭을 설정하는 방법이 있음. 단점은 탭 완성 기능이 불편함.
  • 텍스트 확장기/텍스트 교체 커뮤니티에서도 쉼표로 시작하는 기술이 일반적임.
  • ~/.local/bin에 기억하지 못하는 실행 파일이 많았음. 쉼표로 시작하는 스크립트 이름이 기억을 돕는 데 유용했을 것임.

'_'를 사용하는것은 어떻까요?