![사용자 정의 bash 명령을 만드는 방법은 무엇입니까? (파이썬, 펄, 루비 파일 실행)](https://rvso.com/image/1604254/%EC%82%AC%EC%9A%A9%EC%9E%90%20%EC%A0%95%EC%9D%98%20bash%20%EB%AA%85%EB%A0%B9%EC%9D%84%20%EB%A7%8C%EB%93%9C%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20(%ED%8C%8C%EC%9D%B4%EC%8D%AC%2C%20%ED%8E%84%2C%20%EB%A3%A8%EB%B9%84%20%ED%8C%8C%EC%9D%BC%20%EC%8B%A4%ED%96%89).png)
Python/Perl/Ruby에서 실행되는 특정 도구를 사용하고 싶습니다. 예를 들어 myProgram.py
~/folder1/folder2/에 저장됩니다. bash와 같은 입력으로 실행하고 싶습니다 >>> myProgram -h
.
지금까지 비슷한 작업을 수행하는 두 가지 방법을 읽었습니다.
- bin 디렉터리에 파일을 만듭니다.
# in /bin/
~/folder1/folder2/myProgram
# this works when the target is a bash program
~/.bashrc
영구 별칭 편집 :
# in ~/.bashrc
alias myProgram='python ~/folder1/folder2/myProgram.py'
불행하게도 첫 번째 방법은 bash가 아닌 파일에서는 작동하지 않는 것 같고(내가 시도한 한) 두 번째 옵션은 다음과 같은 오류를 반환합니다 myProgram: command not found
.
명령을 입력하여 Python/Perl/Ruby 도구에 빠르게 액세스하려면 bash 명령을 어떻게 만들어야 합니까?
답변1
이와 같이 스크립트를 실행하려면 세 가지가 필요합니다.
- 스크립트는 변수에 나열된 디렉터리에 있어야 합니다
$PATH
. 에 스크립트를 넣은 경우 로그인할 때마다 파일의 전체 경로를 지정하지 않고 스크립트를 실행하려면 다음 줄을 추가하여~/bin
경로를 확장해야 합니다 . 경로에 이미 어떤 디렉토리가 있는지 보려면 해당 디렉토리를 인쇄하면 됩니다 . 파일 을 변경하려면 다시 로그인(또는 bash를 다시 실행)해야 합니다..bashrc
export PATH=$PATH:~/bin
echo $PATH
.bashrc
- 스크립트에는 실행 가능 비트 권한 세트가 있어야 합니다. 그렇게 하려면 명령을 실행하세요.
chmod +x /path/to/script
- 스크립트는 이를 실행하는 데 사용할 인터프리터를 알려야 합니다. 이를 위해 shebang:이라는 스크립트의 특별한 첫 번째 줄이 사용됩니다
#!/path/to/interpreter
. Python의 경우#!/usr/bin/python
. OS마다 서로 다른 위치에 바이너리가 있을 수 있으므로#!/usr/bin/env python
어디에 있든 기본 Python 인터프리터를 실행하는 형식으로 shebang을 사용하는 것이 좋습니다 .
업데이트: 의견을 바탕으로 이 답변을 심볼릭 링크로 업데이트하고 있습니다. 이미 설치한 도구에 더 쉽게 액세스할 수 있게 만들고 싶다면 스크립트를 만들 필요가 없습니다. 해당 도구의 실행 파일을 찾은 다음(또는 스크립트인 경우 실행 가능하게 설정) man ln
$PATH의 디렉터리에 해당 도구에 대한 심볼릭 링크( 참조)를 배치하거나 $에 실행 파일이 있는 디렉터리를 추가하면 됩니다. 길).
참고: 스크립트를 실행 가능하게 만들고(2. 참조) 유언장 alias
에 추가하는 것만 .bashrc
으로도 작동하지만 새 스크립트를 만들 때마다 새 별칭을 추가하는 것은 매우 불편합니다.