사용자 정의 bash 명령을 만드는 방법은 무엇입니까? (파이썬, 펄, 루비 파일 실행)

사용자 정의 bash 명령을 만드는 방법은 무엇입니까? (파이썬, 펄, 루비 파일 실행)

Python/Perl/Ruby에서 실행되는 특정 도구를 사용하고 싶습니다. 예를 들어 myProgram.py~/folder1/folder2/에 저장됩니다. bash와 같은 입력으로 실행하고 싶습니다 >>> myProgram -h.

지금까지 비슷한 작업을 수행하는 두 가지 방법을 읽었습니다.

  1. bin 디렉터리에 파일을 만듭니다.
# in /bin/
~/folder1/folder2/myProgram
# this works when the target is a bash program
  1. ~/.bashrc영구 별칭 편집 :
# in ~/.bashrc
alias myProgram='python ~/folder1/folder2/myProgram.py'

불행하게도 첫 번째 방법은 bash가 아닌 파일에서는 작동하지 않는 것 같고(내가 시도한 한) 두 번째 옵션은 다음과 같은 오류를 반환합니다 myProgram: command not found.

명령을 입력하여 Python/Perl/Ruby 도구에 빠르게 액세스하려면 bash 명령을 어떻게 만들어야 합니까?

답변1

이와 같이 스크립트를 실행하려면 세 가지가 필요합니다.

  1. 스크립트는 변수에 나열된 디렉터리에 있어야 합니다 $PATH. 에 스크립트를 넣은 경우 로그인할 때마다 파일의 전체 경로를 지정하지 않고 스크립트를 실행하려면 다음 줄을 추가하여 ~/bin경로를 확장해야 합니다 . 경로에 이미 어떤 디렉토리가 있는지 보려면 해당 디렉토리를 인쇄하면 됩니다 . 파일 을 변경하려면 다시 로그인(또는 bash를 다시 실행)해야 합니다..bashrcexport PATH=$PATH:~/binecho $PATH.bashrc
  2. 스크립트에는 실행 가능 비트 권한 세트가 있어야 합니다. 그렇게 하려면 명령을 실행하세요.chmod +x /path/to/script
  3. 스크립트는 이를 실행하는 데 사용할 인터프리터를 알려야 합니다. 이를 위해 shebang:이라는 스크립트의 특별한 첫 번째 줄이 사용됩니다 #!/path/to/interpreter. Python의 경우 #!/usr/bin/python. OS마다 서로 다른 위치에 바이너리가 있을 수 있으므로 #!/usr/bin/env python어디에 있든 기본 Python 인터프리터를 실행하는 형식으로 shebang을 사용하는 것이 좋습니다 .

업데이트: 의견을 바탕으로 이 답변을 심볼릭 링크로 업데이트하고 있습니다. 이미 설치한 도구에 더 쉽게 액세스할 수 있게 만들고 싶다면 스크립트를 만들 필요가 없습니다. 해당 도구의 실행 파일을 찾은 다음(또는 스크립트인 경우 실행 가능하게 설정) man ln$PATH의 디렉터리에 해당 도구에 대한 심볼릭 링크( 참조)를 배치하거나 $에 실행 파일이 있는 디렉터리를 추가하면 됩니다. 길).

참고: 스크립트를 실행 가능하게 만들고(2. 참조) 유언장 alias에 추가하는 것만 .bashrc으로도 작동하지만 새 스크립트를 만들 때마다 새 별칭을 추가하는 것은 매우 불편합니다.

관련 정보