쉘 스크립트를 저장하는 일반적인 좋은 방법은 무엇입니까? (강타, 쉿,...)
현재 내 디렉토리 $HOME
에 bash 및 sh 스크립트가 있습니다.
나는 그들을 사용하여 전화한다
$ bash $HOME/script1.bash arg1, arg2, ...
또는
$ sh $HOME/script2.sh arg1, arg2, ...
표준 위치에 저장하고 일반 애플리케이션(예: ls
,,, pwd
...)으로 호출할 수 있나요? 예를 들어
$ script1 arg1, arg2, ...
$ script2 arg1, arg2, ...
고급 Linux 사용자의 일반적인 관행은 무엇입니까?
답변1
파일 시스템에 속한 스크립트를 저장하고 bin
홈 디렉터리에 디렉터리를 만들 수 있습니다. 다음에 추가
if [ -d "$HOME/bin" ] ; then
export PATH="$HOME/bin:$PATH"
fi
.bashrc
모든 실행 파일을 검색 가능 하게 만듭니다 ~/bin
. 마지막으로 디렉터리에 파일을 추가하기만 하면 됩니다. 기호 링크를 사용하여 에서 검색하려는 스크립트를 가리킬 수 있습니다 ~/bin
. 이를 통해 스크립트 이름을 가상으로 변경하고 파일 시스템에서 원하는 위치에 유지할 수 있습니다. 예를 들어 파일의 경우 my_script.sh
먼저 파일이 실행 가능한지 확인하세요.
chmod u+x my_script.sh
그런 다음 심볼릭 링크를 만듭니다.
ln -s my_script.sh ~/bin/my_script
전용 폴더에 있습니다. 편의를 위해 확장 프로그램을 제거했습니다. 이제 명령을 사용하여 어디에서나 스크립트를 실행할 수 있습니다 my_script
. my_script.sh
원본 파일을 편집할 때마다 심볼릭 링크를 만들 필요는 없습니다 .
편집하다:일부 인터프리터를 통해 텍스트 파일을 실행 가능하게 만들려면 다음을 사용할 수 있습니다.셰르본. bash 스크립트의 경우 이는 추가를 의미합니다.
#!/bin/bash
파일의 첫 번째 줄로. 이 기술은 bash 스크립트에만 국한되지 않고 Python에서도 작동합니다.
#!/usr/bin/env python
노트:개인적 취향에 따라 개인적으로 사용 ~/.local/bin
하지만, 대부분의 사람들은 숨겨진 디렉터리보다는 집에 직접 있는 디렉터리를 사용합니다. 많은 배포판에서는 이를 직접 통합합니다. 예를 들어 debian이나 ubuntu는 해당 디렉터리가 있으면 자동으로 추가합니다(제공되는 기본 파일에 있음). 내 선택은 이미 많은 소프트웨어에서 이를 사용하고 있다는 사실에 기반을 두고 있었으며, 이것이 실제 파일 세트(단지 심볼릭 링크)가 아닌 구성 도구라고 생각했으며 이 폴더가 완성을 방해하는 것을 원하지 않았습니다.~/bin
bin
PATH
.profile
.local/share
답변2
이러한 스크립트의 일반적인 경로는 입니다 $HOME/bin
. 해당 경로가 아직 에 없으면 $PATH
추가해야 합니다.
PATH=$HOME/bin:$PATH
.profile
, .bash_profile
또는 파일 에 추가합니다 .bashrc
.
답변3
쉘 스크립트를 실제 프로그램으로 관리하는 데는 여러 단계가 있습니다.
스크립트의 실행 모드를 켭니다.
chmod +x myscript.sh
시스템에 스크립트 실행 방법을 알려주는 해석기 문자열(
#!
"hash-bang"으로 표시)을 사용하여 스크립트를 시작합니다(기본값은 셸 스크립트이지만 이에 의존하지 않음).#!/bin/bash
스크립트(및 컴파일된 프로그램, 차이는 없음)를 디렉토리에 모으고 해당 디렉토리를 실행에 넣으십시오
PATH
. 자신의 스크립트에 대한 관례적인 위치는 이지만$HOME/bin
실제로는 귀하에게 달려 있습니다.이것을 향후 쉘에 넣으면
~/.profile
or를 찾는 것과 똑같은 방식으로 스크립트를 찾을 수 있습니다. (물론 후자가 별칭이 아닌 한 :-))ls
make
export PATH="$HOME/bin:$PATH"
Unix는 Windows와 달리 실행 파일 확장자를 무시하지 않습니다. 스크립트가 호출되면 이를 실행하려면
myscript.sh
입력해야 합니다 .myscript.sh
따라서 이름을 다음과 같이 바꾸십시오myscript
. 소스 코드의 첫 번째 줄은 그것이 어떤 유형의 스크립트인지 정확하게 알려줍니다.mv myscript.sh myscript
myscript
이제 완전히 일반적인 명령이므로 다른 명령처럼 실행할 수 있습니다. 이미 실행 파일과 동일한 이름이 있는 경우 해당 파일을 PATH
먼저 지정하므로 우선적으로 적용됩니다 $HOME/bin
. (원하시면 맨 마지막에 넣으셔도 됩니다.)
답변4
예, 작업 디렉터리에 관계없이 이름으로 스크립트를 호출할 수 있도록 설정할 수 있습니다.
속도
- 디렉터리의 파일이 실행 가능한지 확인하세요.
chmod
- 바이너리 실행 파일이 아닌 스크립트인 경우 스크립트가 적절한 것으로 시작하는지 확인하세요.셰르본.
- 파일이 포함된 디렉터리가 에 있는지 확인하세요
PATH
.- 하지만 먼저 적합한 디렉터리인지 확인하세요(다음 섹션 참조).
- 간단한 명령 이름으로 스크립트에 액세스하려면 파일 확장자를 제거하거나 디렉터리에 원하는 이름으로 심볼릭 링크를 만드세요.
- 이는 전적으로 선택사항입니다.
- 심볼릭 링크를 생성하려면:
ln -s origfile linkname
스크립트를 넣을 위치
이제 실행 파일을 어느 디렉터리에 넣어야 할까요? 궁극적으로 스크립트가 시스템에 얼마나 표시되기를 원하는지에 따라 다릅니다.
- 귀하가 시스템 관리자이고 원하는 경우모든 사람스크립트를 실행하려면 스크립트를 에 배치하세요
/usr/local/bin
.- 이 디렉터리는 이미
PATH
많은 시스템에 기본적으로 존재합니다.
- 이 디렉터리는 이미
- 본인만 액세스할 수 있도록 하려면 에 입력하세요
~/bin
.
또 다른 기사에서는 실행 가능한 스크립트와 바이너리를 어디에 배치해야 하는지에 대한 유용한 정보를 제공합니다.Linux에서 항목을 어디에 넣을지 어떻게 알 수 있나요?.