파일 (예 : .sh 스크립트)을 실행 가능하게 만들어 터미널에서 실행할 수있는 방법


245

script.sh 파일이 있는데이 파일 형식은 shellscript 파일입니다. 이 파일을 응용 프로그램 / x 실행 파일로 만들고 싶습니다. 어떻게 만들 수 있습니까?




응용 프로그램 / x 실행 파일 만들기에 대해 특별히 요청했기 때문에 복제본이 아닙니다. 다른 질문은 터미널에서 sh 파일을 열도록 요청합니다.
Ziyaddin Sadigov

답변:


326

파일을 실행 파일로 표시 할 수 있습니다.

chmod +x filename.sh

그런 다음 다음과 같이 실행할 수 있습니다.

./filename.sh

다른 명령을 사용하여 시작하려면 별명을 추가 할 수 있습니다.

gedit ~/.bashrc

파일 끝에 이것을 추가하십시오.

alias <new name>='/home/<full path to script>/filename.sh'

적용 할 새 터미널 세션을 열거 나 source ~/.bashrc터미널에서 입력 하십시오. 그런 다음 새 이름을 사용하여 스크립트를 시작하십시오.


"alias command1 = '/home/user_name/dir/script.sh'와 같이 명령을 입력 한 후 sudo 명령을 사용하는 방법을 알고 있습니까? 내에서는 sudo없이 작동하지만 sudo에서는 작동하지 않습니다.
Aditya

.bashrc 실행을 편집 한 후 bash를 다시 시작해야합니다. exec bash bash를 다시 시작하십시오.
Sampath Perera

2
왜 실행 파일이 될 않습니다 ./filename.sh뿐 아니라 filename.sh?
user1993

@ user1993 그래, 나는 또한 단지로 그것을 실행 만들 수있는 방법을 찾고 있어요 filename하지./filename
MycrofD

@ user1993 일반적으로 using ./filename.sh은 현재 디렉토리 filename.sh에 파일 을 지정 하고 using 은 현재 디렉토리 또는 PATH의 디렉토리에 파일 을 지정합니다. 첫 번째 사용법은 액세스 된 파일에 대한 불확실성을 제거합니다. 이 경우 #!/bin/bash파일 이름을 입력하기 만하면 bash 또는 다른 인터프리터 ( 스크립트의 첫 번째 줄로 가정하여)로 스크립트를 실행하려고합니다 . 이 사용법은 디렉토리를 지정해야합니다. 또는 bash filename.sh지정되지 않은 디렉토리로 작동하는 것 같습니다.
a505999

37

파일을 실행 가능하게 만드는 두 가지 방법이 있습니다.

GUI 방법 :

권한 탭으로 이동 한 다음`Execute : [] 박스를 체크하십시오. 파일을 프로그램으로 실행하도록 허용하십시오.

여기에 이미지 설명을 입력하십시오

터미널 / 명령 방법 :

다음 중 하나를 사용할 수 있습니다.

cd /to/my/required/directory

그런 다음 실행

chmod +x filename.extension

아니면 그냥 실행 :

chmod +x /path/to/your/filename.extension

chmod 고급 옵션도 있습니다.

공백은 분할되었음을 표시해야합니다. - rwx --- ---

첫 번째 세트 ---는 사용자입니다. 두 번째는 그룹이고 마지막은 기타입니다 (다른 사람)

r은 읽기, w는 쓰기, x는 eXecute를 나타냅니다.

따라서 모든 사람이 읽을 수 있지만 Group 만 실행하고 User 만 읽고 쓸 수 있습니다 (그러나 어떤 이유로 실행하지 않는 경우).

-rw- rx- r-- 그러나 이것은 명령에 다음과 같이 추가됩니다.

chmod +rw-rx-r-- /path/to/file.extension

chmod숫자로도 할 수 있습니다. 바이너리를 기반으로합니다 (1, 2 및 4이므로 생각합니다)

이 숫자들이 있습니다 :

사용자 별 실행은 100입니다. 그룹 별 실행은 010입니다. 다른 사람에 의해 실행은 001입니다

사용자 작성은 200입니다. 그룹 별 쓰기는 020입니다. 다른 글은 002입니다.

사용자가 읽습니다 400. 그룹 별 읽기는 040입니다. 다른 사람이 읽습니다 004.

그런 다음 원하는 조합을 얻기 위해 함께 추가하십시오.

따라서 모든 사람이 읽을 수 있지만 Group 만 실행하고 User 만 쓸 수 있습니다 (그러나 어떤 이유로 실행하지 않는 경우).

400 + 040 + 004010200

600 + 050 + 004 = 654가됩니다.

그런 다음 명령을 실행할 수 있습니다.

chmod +654 /path/to/file.extension 설정합니다.

모든 권한을 설정하려면 다음을 입력하십시오.

chmod +rwxrwxrwx /path/to/file.extension

또는 (쓰기가 약간 쉽지만 각각 기억하기는 어렵습니다) :

chmod +777 /path/to/file.extension

마지막으로 다음을 수행 할 수 있습니다.

chmod -777 /path/to/file.extension

모든 권한을 모든 사람에게서 빼앗아 가기

과:

chmod +300 /path/to/file.extension

다른 권한 (예 : 실행 권한)에 영향을주지 않고 사용자에 대한 읽기 및 쓰기 추가

이 웹 사이트 에는 매우 유용한 작은 격자 선 확인란이 있으며 원하는 옵션을 선택하면 다음과 같은 명령을 제공합니다.

여기에 이미지 설명을 입력하십시오

그러나 가능한 모든 조합을 사용하는 것이 합리적이지는 않습니다. 사용되는 주요 내용은 다음과 같습니다.

755 - Owner모든이 있고, Group그리고 Other읽기 및 실행 할 수 있습니다

700- Owner모두가

644 - Owner읽기 및 쓰기, 수 GroupOther읽을 수 있습니다

600- Owner읽고 쓸 수 있습니다

사소한 사용자 그룹을 사용하는 경우 :

775 - Owner읽기 및 쓰기, 수 GroupOther읽을 수 있습니다

770 - OwnerGroup모두를 가지고 있고, Other읽기 및 실행 할 수 있습니다

750- Owner모두 가지고 Group있으며 읽고 실행할 수 있습니다

664 - OwnerGroup읽기 및 쓰기, 수 Other만 읽을 수 있습니다

660 - Owner하고 Group읽고 쓸 수

640- Owner읽고 쓸 Group수 있으며 읽을 수 있음

/ tmp를 제외하고 777 및 666은 거의 사용되지 않습니다.

일반적인 사용법으로 지적 해 주신 Ilmari Karonen 에게 감사드립니다 !


바이너리 (2 기반) 대신 8 진 (8 기반)을 기반으로하지 않습니까? 이진수에서는 0과 1 만 가질 수 있지만, 8 진수에서는 0, 1, ... 6, 7을 가질 수 있습니다
Justinas

7 = 4 + 2 + 1-111의 @Justinas 바이너리는 읽기 및 쓰기 및 실행을 나타냅니다.
Tim

8

운영:

chmod +x /path/to/file.sh

실행 불가능하게하려면 다음을 실행하십시오.

chmod -x /path/to/file.sh

예를 들어 .sh파일을 만들었습니다 .

vi tester12.sh

vi 편집기에서 코드를 작성한 후 vi 편집기를 종료합니다.

:wq!
chmod +x tester12.sh
./tester12.sh
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.