쉘 스크립트를 전역으로 만드는 방법은 무엇입니까?


82

저는 Mac OS 10.6을 사용하고 있으며 쉘 스크립팅에 대해 한두 가지를 배우려고합니다. 셸 스크립트를 저장하고 실행 가능하게 만드는 방법을 이해하고 있지만 파일을 전역으로 만들기 위해 무엇을 할 수 있는지 또는 파일을 어디에 저장할 수 있는지 궁금합니다 (즉, 어떤 폴더에 있든 액세스 할 수 있음).

예를 들어 .sh 파일을 / Users / username / 디렉토리에 저장하고 실행 가능하게 만들면 해당 특정 디렉토리에서만 해당 스크립트를 실행할 수 있습니다. 예를 들어 / Users / username / Downloads로 이동하면 스크립트를 실행할 수 없습니다.

또한 셸 스크립팅에 대해 자세히 알아보기위한 리소스 제안이 도움이 될 것입니다. 감사


1
PATH먼저 환경 변수 에 대해 읽은 다음 질문을 업데이트하십시오.
S.Lott

답변:



44

전통적으로 이러한 스크립트는 ~/bin(예 : 홈 디렉토리의 bin 디렉토리) 또는 /usr/local/bin/전자는 스크립트가 사용자에게만 작동 함을 의미하고 후자는 시스템의 모든 사용자가 실행할 수 있도록하려는 스크립트를위한 것입니다.

에 넣으면 ~/binPATH 환경 변수에 추가해야 할 수도 있습니다. /usr/local/bin이미 경로에 있어야합니다.


30

두 가지 방법이 있습니다.

  1. 스크립트를 usr / local / bin에 넣고 실행 가능한지 확인하십시오 (chmod + x my_script) (이미 경로에 설정되어 있습니다. echo $ PATH를 수행하여 확인할 수 있습니다)
  2. 홈 디렉토리에 bin이라는 폴더를 만듭니다. (개인 스크립트 용)
    • cd ~ (홈 디렉토리로 이동)
    • mkdir bin (bin 폴더 생성)
    • vim .bash_profile (경로 환경 변수 설정)
    • export PATH = ~ / bin : $ PATH (i를 누른 다음이 줄을 추가 한 다음 esc를 수행하고 : wq 입력)
    • 이제 스크립트 이름을 입력하고 원하는 곳에서 실행할 수 있습니다.

** 참고 : 전체 파일 이름을 입력하는 대신 단축 된 명령으로 스크립트를 실행하려면 .bash_profile에 다음을 추가하십시오.
alias myscript='my_script.sh'
그런 다음 간단히을 입력하여 스크립트를 실행할 수 있습니다 myscript. (원하는 별명으로 서브 할 수 있습니다)


4

Mac 운영 체제에서

  • bash ~ / .bashrc 파일을 엽니 다.
  • export PATH = "$ PATH : /Users/sher.mohammad/Office/practice/practiceShell"을 사용하여 bashrc 파일에 스크립트 경로를 추가합니다 .
  • ~. / bash_profile 파일을 열고 [[-s ~ / .bashrc]] && source ~ / .bashrc를 추가하십시오.
  • 새 터미널 창 열기 이제 터미널을 열 때마다 스크립트가로드됩니다.

왜 직접 넣지 .bash_profile않습니까? 훨씬 간단합니다 (그리고 그 소스 .bashrc는 결코 저에게 효과가 없었습니다).
szeitlin

나는 당신이 로그인 할 때 bash_profile이 실행되고, bashrc는 비 로그인 쉘에 사용되며, OS X는 로그인 쉘과 같이 기본적으로 bash_profile을로드하므로 bash_profile에 추가하면 잘 작동하며 bashrc에 작성하면 [[- S ~ / .bashrc에]] && 소스 ~ / .bashrc에 bash_profile에 로그인시 때 bash_profile 실행 bashrc에로드
셰르 모하마드

4

bashrc 파일에 익숙하다면 이것은 매우 쉽습니다! 이는 .bashrc 파일 만 사용하고 완료하는 데 2 ​​초가 걸립니다.

(저는 Arch Linux Manjaro를 사용하므로 홈 디렉토리에있는 .bashrc를 사용합니다)

.bashrc 파일에 배치 할 코드 :

# Simple bashrc method to launch anything in terminal from any directory

YOURCOMMAND () {
  cd /path/to/directory/containing/your/script/ && ./YOURSCRIPT
}

보시다시피 먼저 간단한 'cd'명령을 사용하고 스크립트 위치의 디렉토리를 지정한 다음 '&&'를 사용하여 바로 다음 명령을 실행하고 마지막으로 스크립트를 열 수 있습니다. 정상적으로! 매우 쉽고 .bash 파일에 바로 저장됩니다! :)

내가 누군가를 도왔기를 바랍니다!

진정으로,

AnonymousX


이것은 훌륭합니다 ... 그리고 그것은 내 zsh가 자동 완성되도록합니다!
Milan

2

bash 쉘을 사용하는 경우 해당 스크립트를 함수로 작성한 다음 .bashrc에 넣거나 해당 함수가 포함 된 파일을 "source file_name"으로 소싱합니다.

이제 셸에서 함수 호출로 스크립트를 실행합니다.


1

에 저장 중 하나 /usr/bin(또는 다른 디렉토리에 존재 PATH) 또는 편집 PATH이 기본적으로 어떤 디렉토리에 실행하게됩니다에 저장된 디렉토리를 포함 할 수 있습니다.


7
/usr/binOS 업그레이드 중에 완전히 비워지고 교체되어 스크립트가 신비하게 사라질 수 있습니다. /usr/local/binBryan Oakley가 언급했듯이이 목적을위한 것입니다. 또한 Filesystem Hierarchy Standard
Stephen P

0

'script.sh'의 작업 디렉토리에서 "mv [script.sh] / usr / local / bin"(테스트되지 않았지만 IMO가 가장 덜 복잡한 방식 인 것 같습니다.)


1
sudo mv script.sh /usr/local/bin권한 상승 없이는 해당 디렉토리에 쓸 수 없기 때문에 아마도이 필요할 것입니다 .
Perette

-2

컴퓨터의 전역 실행 가능 디렉토리에 넣어야합니다. 나는 그것이 일반적으로 /usr/bin유닉스 기반 운영 체제에 있다고 생각합니다 (그러나 대부분의 경우 해당 컴퓨터에 대한 슈퍼 사용자 권한이 필요합니다).

$PATH해당 변수에 해당 디렉토리가있는 사용자에게만 작동하지만 환경 변수 에있는 다른 디렉토리에 저장할 수도 있습니다 .

$PATH에 입력하여 의 값을 찾을 수 있습니다 echo $PATH. 디렉토리는로 구분됩니다 : .


9
/ usr / bin이 잘못된 답이기 때문에 나는 반대 투표를 할 것입니다. / usr / local / bin은 "로컬"스크립트를 위해 특별히 설계되었습니다 (예 : 시스템과 함께 제공되는 스크립트가 아닌 사용자가 만든 스크립트).
Bryan Oakley
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.