programing

Unix 콘솔 또는 Mac 터미널에서 셸 스크립트를 실행하는 방법은 무엇입니까?

bestprogram 2023. 4. 27. 22:53

Unix 콘솔 또는 Mac 터미널에서 셸 스크립트를 실행하는 방법은 무엇입니까?

저도 알아요, 잊어버리고 다시 배워요.적어야 할 시간입니다.

실행 불가능 파일을 실행하려면 다음과 같이 하십시오.sh스크립트, 사용:

sh myscript

실행 불가능 파일을 실행하려면 다음과 같이 하십시오.bash스크립트, 사용:

bash myscript

실행 파일(실행 권한이 있는 파일)을 시작하려면 경로로 지정하면 됩니다.

/foo/bar
/bin/bar
./bar

스크립트를 실행 파일로 만들려면 필요한 권한을 부여합니다.

chmod +x bar
./bar

파일이 실행 가능한 경우 커널은 파일을 예상하는 방법을 파악하는 역할을 합니다.이진이 아닌 경우 파일의 첫 번째 줄을 보면 됩니다.다음을 포함해야 합니다.hashbang:

#! /usr/bin/env bash

. (이 경우 는 " " " " 입니다./usr/bin/env 인와수함실니다됩행께로 됩니다.bash다음 번째에 전달됩니다 그런 다음 스크립트는 후속 인수로 스크립트에 제공한 모든 인수와 함께 프로그램(두 번째 인수)에 전달됩니다.

, 실행 가능한 모든 스크립트에 해시방이 있어야 합니다.그렇지 않다면 커널에 그것이 무엇인지 알려주지 않을 것이고, 따라서 커널은 그것을 해석하기 위해 어떤 프로그램을 사용해야 할지 모릅니다.그럴 수도 있습니다.bash,perl,python,sh 커널, 올바른 할 수도 있기 에 매우 위험하지만 사이 행동 . 이는 파일이 전혀 올바른 인터프리터가 아닐 수도 있고 일부를 구문 분석할 수도 있지만 다음과 같은 미묘한 행동 차이가 있을 수도 있기 때문에 매우 위험합니다.sh그리고.bash).

에 대한 주의사항/usr/bin/env

가장 일반적으로 해시 뱅은 다음과 같습니다.

#!/bin/bash

./bin/bash대본을 해석하는 것. 불하게도행,,bash기본적으로 항상 출고되는 것은 아니며 항상 에서 사용할 수 있는 것은 아닙니다./bin에서는 POSIX 머신의 가 합니다.bash다음과 같은 다양한 위치에 있는 선박들./usr/xpg/bin/bash또는/usr/local/bin/bash.

따라서 휴대용 bash 스크립트를 작성하기 위해 하드 코딩에 의존할 수 없습니다.bash프는램.는 이미 을 다루는 메커니즘을 가지고 있습니다: POSIX 이다처리위기한가있을다습니지.PATH을 이개은프에있디중하것에 있는 중 입니다.PATH그리고 당신이 프로그램을 실행하고 싶을 때 시스템은 당신의 프로그램을 찾을 수 있습니다.

슬프게도, 여러분은 이것을 그냥 할 수 없습니다.

#!bash

은 ( "" "" "" ""를 하지입니다.PATH당신을 찾습니다.할 수 있는 프로그램이 있습니다.PATH하지만 당신을 찾는 것은, 그것은, 그것은, 이라고 불립니다.env 거의 에는 다히도모, 거시템에스든이 .env설된프램에 설치된 /usr/bin는 시, 니다합작을 시작합니다.env하드 코딩된 경로를 사용하면 다음과 같은 작업이 수행됩니다.PATHbash스크립트를 해석할 수 있도록 실행합니다.

#!/usr/bin/env bash

이 접근 방식에는 한 가지 단점이 있습니다.POSIX에 따르면 해시방은 하나의 인수를 가질 수 있습니다.이 경우에는 다음과 같이 사용합니다.bash로서의 으로서.env프그램로. , 즉, 우주장전에 인수를 이 없다는 입니다.bash그래서 어떤 것을 변환할 방법이 없습니다.#!/bin/bash -exu이 계획에.당신은 그것을 넣어야 할 것입니다.set -exu대신 해시방 뒤에.

또이점이 : 접근방식다같음은또다있이다이습니점도른과는에이▁this다있.일부 시스템은 다음과 함께 제공될 수 있습니다./bin/bash도 있고 버그가 오래된 것을 도 있으며 의 하만사는그않있수고도을버, 있있고수구도것다수의설을, 있니습도했치을자신식일나거지그가용을 했을 수도 .bash애플 X()에서는 종종 가 있습니다./bin/bash 버전의 파일을 합니다./usr/local/bin/bash홈브루 같은 것을 사용합니다.를 할 때env을 하는 PATH검색하면 사용자의 기본 설정을 고려하여 시스템이 제공된 것보다 선호하는 배시를 사용할 수 있습니다.

셸 스크립트 '파일을 시작합니다.sh':

sh file.sh

bash file.sh

다른 옵션은 chmod 명령을 사용하여 실행 파일 권한을 설정하는 것입니다.

chmod +x file.sh

이제 다음과 같이 .sh 파일을 실행합니다.

./file.sh

본 셸의 경우:

sh myscript.sh

bash의 경우:

bash myscript.sh

스크립트가 현재 셸에서 실행되도록 하려면(예: 디렉토리 또는 환경에 영향을 미치도록 하려면) 다음과 같이 말해야 합니다.

. /path/to/script.sh

또는

source /path/to/script.sh

:/path/to/script.sh를 들어 예를 들어수, 일있습다니적상대,▁relative다▁be와 같이 상대적일 수 있습니다.. bin/script.sh를 실행합니다.script.sh에 시대에bin현재 디렉터리 아래에 있는 디렉터리입니다.

을 부여합니다: - 저실행권부여니다합한을먼.
chmod +x script_name

  1. 할 수 없는 - 크립트실수경우없는: -
    파일을 실행하는 경우:-
    sh script_name
    파일bash 파일을 실행하는 :-
    bash script_name
  2. 가능한 - 크립트가실경우한: -
    ./script_name

참고:-'ls -a'를 사용하여 파일 실행 가능 여부를 확인할 수 있습니다.

파일 확장명 .명령어는 Terminal.app에 할당됩니다..명령 파일을 두 번 클릭하면 실행됩니다.

또한 스크립트에서 #!hashbang을 사용하여 동일한 폴더에서 인터프리터를 실행할 수 있습니다.

를 들어 /usr/bin에서 복사한 php7.2 실행 파일은 hello 스크립트를 따라 있는 폴더에 있습니다.

#!./php7.2
<?php

echo "Hello!"; 

실행 방법:

./hello

다음과 같이 동작합니다.

./php7.2 hello

문서화된 적절한 솔루션은 도구 Linux 배포 및/또는 이미지일 수 있습니다. 이는 후드 아래에서 이 방법을 사용하는 것입니다.

언급URL : https://stackoverflow.com/questions/733824/how-to-run-a-shell-script-on-a-unix-console-or-mac-terminal