쉘 스크립트 저장하기

쉘 스크립트 저장하기

쉘 스크립트를 저장하는 일반적인 좋은 방법은 무엇입니까? (강타, 쉿,...)

현재 내 디렉토리 $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는 해당 디렉터리가 있으면 자동으로 추가합니다(제공되는 기본 파일에 있음). 내 선택은 이미 많은 소프트웨어에서 이를 사용하고 있다는 사실에 기반을 두고 있었으며, 이것이 실제 파일 세트(단지 심볼릭 링크)가 아닌 구성 도구라고 생각했으며 이 폴더가 완성을 방해하는 것을 원하지 않았습니다.~/binbinPATH.profile.local/share

답변2

이러한 스크립트의 일반적인 경로는 입니다 $HOME/bin. 해당 경로가 아직 에 없으면 $PATH추가해야 합니다.

PATH=$HOME/bin:$PATH

.profile, .bash_profile또는 파일 에 추가합니다 .bashrc.

답변3

쉘 스크립트를 실제 프로그램으로 관리하는 데는 여러 단계가 있습니다.

  1. 스크립트의 실행 모드를 켭니다.

    chmod +x myscript.sh
    
  2. 시스템에 스크립트 실행 방법을 알려주는 해석기 문자열( #!"hash-bang"으로 표시)을 사용하여 스크립트를 시작합니다(기본값은 셸 스크립트이지만 이에 의존하지 않음).

     #!/bin/bash
    
  3. 스크립트(및 컴파일된 프로그램, 차이는 없음)를 디렉토리에 모으고 해당 디렉토리를 실행에 넣으십시오 PATH. 자신의 스크립트에 대한 관례적인 위치는 이지만 $HOME/bin실제로는 귀하에게 달려 있습니다.

    이것을 향후 쉘에 넣으면 ~/.profileor를 찾는 것과 똑같은 방식으로 스크립트를 찾을 수 있습니다. (물론 후자가 별칭이 아닌 한 :-))lsmake

    export PATH="$HOME/bin:$PATH"
    
  4. Unix는 Windows와 달리 실행 파일 확장자를 무시하지 않습니다. 스크립트가 호출되면 이를 실행하려면 myscript.sh입력해야 합니다 . myscript.sh따라서 이름을 다음과 같이 바꾸십시오 myscript. 소스 코드의 첫 번째 줄은 그것이 어떤 유형의 스크립트인지 정확하게 알려줍니다.

    mv myscript.sh myscript
    

myscript이제 완전히 일반적인 명령이므로 다른 명령처럼 실행할 수 있습니다. 이미 실행 파일과 동일한 이름이 있는 경우 해당 파일을 PATH먼저 지정하므로 우선적으로 적용됩니다 $HOME/bin. (원하시면 맨 마지막에 넣으셔도 됩니다.)

답변4

예, 작업 디렉터리에 관계없이 이름으로 스크립트를 호출할 수 있도록 설정할 수 있습니다.

속도

  1. 디렉터리의 파일이 실행 가능한지 확인하세요.chmod
  2. 바이너리 실행 파일이 아닌 스크립트인 경우 스크립트가 적절한 것으로 시작하는지 확인하세요.셰르본.
  3. 파일이 포함된 디렉터리가 에 있는지 확인하세요 PATH.
    • 하지만 먼저 적합한 디렉터리인지 확인하세요(다음 섹션 참조).
  4. 간단한 명령 이름으로 스크립트에 액세스하려면 파일 확장자를 제거하거나 디렉터리에 원하는 이름으로 심볼릭 링크를 만드세요.
    • 이는 전적으로 선택사항입니다.
    • 심볼릭 링크를 생성하려면:ln -s origfile linkname

스크립트를 넣을 위치

이제 실행 파일을 어느 디렉터리에 넣어야 할까요? 궁극적으로 스크립트가 시스템에 얼마나 표시되기를 원하는지에 따라 다릅니다.

  • 귀하가 시스템 관리자이고 원하는 경우모든 사람스크립트를 실행하려면 스크립트를 에 배치하세요 /usr/local/bin.
    • 이 디렉터리는 이미 PATH많은 시스템에 기본적으로 존재합니다.
  • 본인만 액세스할 수 있도록 하려면 에 입력하세요 ~/bin.

또 다른 기사에서는 실행 가능한 스크립트와 바이너리를 어디에 배치해야 하는지에 대한 유용한 정보를 제공합니다.Linux에서 항목을 어디에 넣을지 어떻게 알 수 있나요?.

관련 정보