.sh 스크립트는 어떻게 실행합니까?


344

.sh 파일을 열 때마다 터미널 대신 gedit에서 파일을 엽니 다. 나는 유사한 어떤 옵션을 찾을 수 없습니다 마우스 오른쪽 단추로 클릭열기를다른 응용 프로그램 ...터미널 .

터미널에서이 파일을 어떻게 열 수 있습니까?


이 스크립트는 향후 사용을 위해 env 변수를 설정하는 것을 목표로합니까?
Rob

1
스크립트에서 확장을 사용해서는 안됩니다. 나중에 언젠가는 현재 스크립트가 수행하는 작업을 수행하기 위해 다른 언어가 더 적합하다는 것을 알게 될 것입니다. 그리고 당신은 문제가 있습니다. 완전히 오해의 소지가있는 확장명을 사용하여 이전 이름을 유지합니까, 아니면 이름을 바꾸어 스크립트가 사용되는 곳을 편집해야합니까?
geirha

파일 확장자가 필요하지 않습니다. 가지고있는 것이 좋지만 필요하지는 않습니다. OS가 파일 확장자를 보지 않습니다. 그것은 데이터를 본다
ActionParsnip

5
당신이 루비에 foo.sh를 다시 작성하는 경우 MEH, 당신은 항상 시작합니다 .sh로 파일을 사용할 수 있습니다ruby foo.rb
글렌 잭맨

돌고래에서 F4를 누르면 콘솔이 열립니다
Motte001

답변:


523

스크립트에 실행 권한을 부여하십시오.

chmod +x /path/to/yourscript.sh

그리고 스크립트를 실행하려면 :

/path/to/yourscript.sh

때문에 .현재 디렉토리를 참조 : 경우 yourscript.sh현재 디렉토리에, 당신이 할 단순화 할 수 있습니다 :

./yourscript.sh

13
+1 만 응답하여 터미널에만 실행 권한을 추가하는 것을 표시합니다.
Hailwood

83
만약 당신이 bash /path/to/yourscript.sh필요하지 않으면chmod +x
Aleksandr Levchuk

4
실제로 . /path/to/yourscript.sh스크립트가 일부 환경 변수를 설정해야하는 경우 사용할 수 있습니다 .
Rob

1
아무도 전통을 언급 ./path/to/yourscript.sh하지 않습니다 : (뒤에 공백없이 .)? 나는 사람이 사용하기 간단하고 쉬운 것을 발견 ...하지만 어쨌든, 여기와 거의 동일해야 내 대안 ./은 사용하지 않을 이유가 표시되지 않습니다 불구 것 ./: (FILENAME=~/rem4space.sh;SLL=$(cat $FILENAME|head -1|sed 's:^#!\(.*\):\1:g');[ ! -z $SLL ] && exec $SLL $FILENAME;sh $FILENAME)... 편집 FILENAME원하는대로 . 또한 sh대안이 없으면 사용됩니다.
MiJyn

88

파일 관리자에서 셸 스크립트를 실행하려면 셸 스크립트를 실행 가능으로 표시해야합니다.

  1. .sh파일을 마우스 오른쪽 버튼으로 클릭 하고 속성을 선택하십시오 .

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

  2. 에서 사용 권한 탭, 확인 프로그램으로 파일을 실행 허용 :

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

  3. 속성 창을 닫고 파일을 두 번 클릭하십시오. 터미널에서 스크립트를 실행할 수있는 옵션을 제공하는 대화 상자가 나타납니다.

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


10
우분투 13.04에서는 작동하지 않습니다. 어쨌든 gedit을 계속 열어두고 실행을 요구하지 않습니다. 편집 : Nvm, imjustmatthew가 이에 답변합니다.
mpen

이것을 사용하기 전에 chmod를 사용하여 실행할 파일 권한을 만들어야합니다. chmod + x filename.sh 또는 chmod 755 filename.sh
Arvind Rawat

팝업이 없습니다! 팝업이 아닌 IDE가 곧바로 열립니다
Green

인터페이스에서 "터미널에서 실행"을 찾을 수없는 이유는 무엇입니까? (Ubuntu 18.04)
Daniel Möller

1
@ DanielMöller, 귀하의 질문에 대한 답변입니다. askubuntu.com/questions/38661/how-do-i-run-sh-files/…
Akhilesh Dhar Dubey

33

터미널을 열고 .sh파일이 있는 폴더로 이동하십시오 . 그런 다음 다음을 입력하십시오.

sh <name of file>.sh

모든 응용 프로그램을 여는 가장 좋은 방법입니다. .sh 디렉토리로 이동 한 후 명령 프롬프트에서여십시오. 사용 권한이 필요한 경우 sh <위에 표시된 파일 이름> .sh 사용 chmod + x /path/to/yourscript.sh를 사용하거나 마우스 오른쪽 단추를 클릭하고 모든 권한을 변경하십시오
Durgesh Kumar

24

전제 조건

.sh 파일을 실행하기 전에 파일을 실행 가능하게 만들어야합니다.

  1. 파일을 마우스 오른쪽 버튼으로 클릭
  2. 속성 선택
  3. 권한 선택
  4. 프로그램으로 파일 실행 허용을 선택하십시오.

경고

파일을 가져온 소스를 신뢰해야합니다. 바이러스 일 수 있습니다 .

아주 간단한 방법

  1. 파일을 두 번 클릭하십시오
  2. 터미널에서 실행을 클릭하십시오.

문제가 있습니다. 터미널이 즉시 닫히고 출력을 볼 수 없습니다.

간단한 방법

  1. 응용 프로그램 열기-> 액세서리-> 터미널
  2. .sh 파일을 터미널로 끌어다 놓고 Enter 키를 누릅니다

전문가들이하는 방식

  1. 응용 프로그램 열기-> 액세서리-> 터미널
  2. .sh 파일이있는 위치를 찾으십시오

    • 사용 lscd명령
    • ls현재 폴더 의 파일과 폴더를 나열 합니다 . "ls"를 입력하고 Enter를 누르십시오.
    • 이동하려는 폴더가 표시되면를 실행 한 cd다음 공백과 폴더 이름을 차례로 입력하십시오.
    • 원하지 않는 폴더에 들어간 경우 cd ..한 단계 위로 이동
  3. .sh 파일을 실행하십시오.

    • 예를 들어 다음 script1.shls실행하면 볼 수 있습니다 .

      ./script.sh

왜 복잡한 방법입니까?

터미널에는 명령을 입력하여 액세스 할 수있는 다양한 도구가 있습니다. 전문가는 ls및 을 입력하여 .sh 파일을 찾습니다 cd. 올바른 현재 폴더에 있으면 다음과 같이 스크립트를 실행할 수 있습니다.

./script1.sh

또는 출력을 실행하여 파일로 리디렉션 할 수 있습니다.

./script1.sh > out.txt

또는 키워드에 대한 출력 (예 : "사과")을 필터링 한 다음 파일로 리디렉션 할 수 있습니다.

./script1.sh | grep apples > ./only-apples

몇 가지 명령 만 입력하면 해당 파일에 수천 가지 작업을 수행 할 수 있습니다.

또 하나의 간단한 명령으로 인터넷에서 파일을 다운로드 할 수 있습니다.

wget www.google.com/images/logos/ps_logo2.png

그런 다음 파일을 다음과 같이여십시오.

shotwell ps_logo2.png

6
것을 임 확실하지 않은 방법 전문가가 할 올바른지, 그것은의 경우 더있어 간단한 방법은 고급 (의 출력 제어를위한) 방법
Hailwood

전문가가 첫 번째 시험에서 수행 한 방식으로 수행 한 것을 아는 것이 좋습니다. 기본 사용자 방법이라고 생각했습니다.
NelsonGon

19

Ubuntu 13.04에서 노틸러스에서 열린 실행 파일은 이제 사용자에게 파일을 실행하라는 메시지를 표시하지 않고 gedit에서 기본적으로 열립니다. 고전적인 동작을 사용하려면 환경 설정을 조정해야합니다.

노틸러스 → 편집 메뉴 → 기본 설정 → 동작 탭 → 매번 묻기 근처의 라디오 버튼을 클릭합니다.


질문을 한 사람은 Ubuntu 10.10
edwin

1
감사합니다!!! 왜 그들이 이것을 바꾸 었는지 몰라 아무것도 실행하는 방법을 알 수 없었습니다.
mpen

1
이것은 최신 우분투에 대한 정답입니다.
gaRex

15.10에 노틸러스에 어떻게 가나 요?
Yaakov Ainspan

Ubuntu 18.04부터는 디렉토리를 열고 상단 표시 줄에서 "파일-> 환경 설정"을 클릭하여 환경 설정에 액세스 할 수 있습니다.
tparker

7

.sh를 사용하여 파일이 있는 디렉토리로 이동하십시오 cd. 이 예에서는 sh파일을 다음과 같이 저장 했습니다.~/Desktop/shell_practice/test.sh

먼저 현재 pwd위치를 파악하고 반환되면 /home/username( username실제 사용자 이름은 어디에 있습니까? )

cd Desktop/shell/practice

다른 곳에있는 것 같으면 절대 경로를 사용할 수 있습니다

cd ~/Desktop/shell/practice

또는

cd $HOME/Desktop/shell/practice

또는

cd /home/$USER/Desktop/shell/practice

이들은 모두 같은 장소를 설명하는 방법입니다. 스크립트의 위치에 도달하면 다음을 입력하십시오.

ls

sh출력 에서 파일을 볼 수 있으면 파일을 chmod실행 가능하게 만들 수 있습니다 . 필자의 경우 파일 이름은 test.sh이므로

chmod u+x test.sh

이제 스크립트와 동일한 디렉토리에 있으므로 파일의 위치 ./(파일 이름과 구별하기 위해 현재 디렉토리 다음에 경로 구분 기호)를 지정하여 파일을 실행할 쉘에 지정해야합니다 . 내 파일을 실행하려면 다음을 입력하십시오.

./test.sh

스크립트가 올바르게 작성된 경우 오류없이 실행됩니다 ...

다음은 실제 예입니다. 여기 라이브 예가 있습니다


이 우분투에 넷빈즈를 설치하는 나를 위해 일한
RuD3B0y

1
Wb, @ RuD3B0y, 편집 내용이 있으면 멍청한 놈, 최첨단 내용 없음에 가장 적합한 답변을 유지하려고했습니다.
TheExorcist

4

2 가지 주요 단계.

  1. 터미널에서 gedit를 사용하여 ".sh"확장자를 가진 스크립트를 작성하고 데스크탑에 저장하십시오. (그러나 모든 텍스트 편집기를 사용할 수 있습니다)

  2. 노틸러스를 열고 script.sh 파일을 마우스 오른쪽 버튼으로 클릭하십시오.

    • 속성에서 "파일 실행 허용"확인란을 선택하십시오.

    • 노틸러스 메뉴에서 파일, 환경 설정, 동작을 차례로 클릭하십시오.

    • "실행 파일을 열 때 실행 텍스트 파일 실행"을 확인하십시오.

이제 데스크탑에서 파일을 두 번 클릭하면 파일이 실행됩니다. .또는 필요가 없습니다./


3
  1. .sh파일을 마우스 오른쪽 버튼으로 클릭하고 실행 파일로 만듭니다.

  2. 터미널을 엽니 다 ( Ctrl+ Alt+ T).

  3. .sh파일을 터미널 창으로 드래그하여 경외심을 가지십시오.


1
Ask Ubuntu에 오신 것을 환영합니다! 첫 단계를 수행하는 방법에 대한 특정 세부 사항으로 확장 하려면 이 답변 을 편집하는 것이 좋습니다 . ( AskUbuntu에서 어떤 종류의 답변이 가장 가치있는 것으로 간주되는지에 대한 일반적인 조언은 좋은 답변을 작성하는 방법을 참조하십시오 .)
David Foerster

3

이를 수행하는 몇 가지 방법이 있습니다.

옵션 1

  1. 터미널에서 Bash 파일이 사용중인 디렉토리에 액세스하십시오 (디렉토리 cd변경).

    전의. cd Downloads

  2. 운영 bash <filename>.sh

    .run 파일에서도 작동합니다. 이 웹 페이지에는 리듬 박스 업데이트에 대한 사용 예가 있습니다 .

옵션 2

  1. 터미널에서 bash 파일이있는 디렉토리로 이동하십시오.

  2. 운영 chmod +x <filename>.sh

  3. 노틸러스에서 파일을 엽니 다.


3

를 들어 우분투 18.04 당신이 팝업 대화를하지 않는 한, 약간의 수정이 있습니다.

그래서 당신이해야 할 일은 :

파일을 마우스 오른쪽 단추로 클릭하고 실행 파일 텍스트 파일 아래에서 환경 설정> 동작 탭 선택> '무엇을해야합니까?'표시 옵션을 선택하십시오.

이제 .sh 파일을 두 번 클릭하면 팝업 창이 표시되며 "터미널에서 실행"옵션을 선택하여 .sh 파일을 실행할 수 있습니다.

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


2

우분투 16.04에서 이것은 터미널에서 여는 방법입니다.

로 이동하여 File Manager > Edit > Preferences > BehaviorExecutable Text Files선택하십시오 Ask each time.

문제는 기본적으로로 설정되어 있다는 것 View Executable Files when they are opened입니다.


1

쉘 스크립트 나 다른 실행 파일을 / usr / local / bin에 저장하면 명령 줄에 폴더 경로를 제공하거나 이름에 ./를 추가하지 않고도 파일을 찾고 실행할 수 있습니다. 예를 들어 디스크 UUID를 표시하기 위해 다음과 같은 간단한 3 줄 bash 스크립트를 만들었습니다.

#!/bin/bash
echo "* UUIDs must match in /etc/fstab and /boot/grub/menu.lst"
sudo blkid

파일 uuid를 호출하여 / usr / local / bin에 배치했습니다. 커맨드 라인에 입력해야 할 것은 다음과 같습니다.

uuid

0

글쎄, 나도 같은 문제에 직면했다. .sh 파일을 실행하고 싶었고 CentOS 7에서 Gedit로 열었습니다.

  1. .sh실행하려는 파일 의 경로로 이동했습니다 .
  2. 터미널을 열었습니다.
  3. 터미널 창에서를 끌어서 놓아 경로와 함께 해당 파일을 입력으로 자동 가져갔습니다.
  4. Enter 키를 누르고 가십시오!

0

몇 가지 배포판에서 발견 한 문제는 노틸러스의 환경 설정 옵션이 숨겨져 있다는 것입니다. 그러나 우분투에서 수정하고 Gnome3을 사용하는 다른 배포판은 동일합니다 (문자 그대로 Fedora 버전을 완료하고 실제 수정 사항을 게시하여 나에게 상기시켜줍니다) 어떻게 미래에).

  1. 설치 dconf-editor

    sudo apt-get install dconf-editor
  2. dconf-editor원하는 사용자 계정을 사용하여 실행하십시오 ( 예 : root가 아님).

    dconf-editor
  3. 다음 스키마로 이동하십시오.

    org.gnome.nautilus.preferences

  4. 기본 옵션이 기본적으로 열리지 않도록 변경하십시오.

    검색 executable-text-activation단어를 클릭 display하고 변경ask

앞으로 파일을 편집,보기 또는 실행할 수있는 옵션이 제공됩니다.


0

나는 리눅스에서 멍청한 놈이며 방금 같은 문제가 있었다. 다른 모든 것이 실패하면 :

  1. 터미널 열기
  2. .sh 파일이 들어있는 폴더를 엽니 다
  3. 파일을 터미널 창으로 드래그 앤 드롭
  4. 파일 경로가 터미널에 나타납니다. 를 누릅니다 Enter.
  5. Voila, .sh 파일이 실행되었습니다.

-2

.다른 답변을 제안하면서 트릭 을 사용할 수도 있습니다 .

예를 들면 다음과 같습니다.

chmod +x filename.sh파일 경로로 이미 이동했다고 가정하면 다음 명령 중 하나를 사용하여 파일을 실행하십시오.

sh filename.sh

./filename.sh

. filename.sh

2
경고 :이 세 명령은 동일 하지 않습니다 . shebang이 다른 바이너리 (예 : Stack)를 참조하는 경우 세 번째 명령은 Bash로 인수를 구문 분석하려고 시도하는데 실패합니다.
Jezen Thomas
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.