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
하드 코딩된 경로를 사용하면 다음과 같은 작업이 수행됩니다.PATH
를 bash
스크립트를 해석할 수 있도록 실행합니다.
#!/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
- 할 수 없는 - 크립트실수경우없는: -
파일을 실행하는 경우:-
sh script_name
파일bash 파일을 실행하는 :-
bash script_name
- 가능한 - 크립트가실경우한: -
./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
'programing' 카테고리의 다른 글
zure의 윈도우 서비스와 동등한 것은 무엇입니까? (0) | 2023.04.27 |
---|---|
Git의 .classpath 및 .project 무시 (0) | 2023.04.27 |
Visual Studio 2013 솔루션 빌드가 빌드 순서가 아님 (0) | 2023.04.27 |
grep에서 별표 사용 (0) | 2023.04.27 |
이 "Base-64 문자 배열에 대한 잘못된 길이"의 원인 (0) | 2023.04.27 |