ฉันจะรันสคริปต์. sh ได้อย่างไร


344

เมื่อใดก็ตามที่ฉันเปิดไฟล์. sh มันจะเปิดเป็น gedit แทนที่จะเป็นเทอร์มินัล ฉันไม่สามารถหาตัวเลือกใด ๆ ที่คล้ายกับการคลิกขวาเปิดด้วยแอพลิเคชันอื่น ๆ ... → ร์มินัล

ฉันจะเปิดไฟล์นี้ในเทอร์มินัลได้อย่างไร


สคริปต์นั้นตั้งเป้าที่จะตั้งค่าตัวแปร env เพื่อใช้งานต่อไปหรือไม่?
Rob

1
คุณไม่ควรใช้ส่วนขยายกับสคริปต์ ในบางจุดในอนาคตคุณอาจพบว่าภาษาอื่นมีความเหมาะสมในการทำงานที่สคริปต์ปัจจุบันของคุณกำลังทำอยู่ แล้วคุณมีปัญหา คุณใช้ชื่อเดิมพร้อมส่วนขยายที่ทำให้เข้าใจผิดโดยสมบูรณ์หรือคุณเปลี่ยนชื่ออาจต้องแก้ไขสถานที่จำนวนมากที่สคริปต์ของคุณใช้อยู่หรือไม่
geirha

คุณไม่ต้องการนามสกุลไฟล์ เป็นเรื่องดีที่มี แต่ไม่จำเป็น ระบบปฏิบัติการไม่ได้ดูที่นามสกุลไฟล์ มันดูข้อมูล
ActionParsnip

5
ถ้าคุณเขียน foo.sh เป็นทับทิมคุณสามารถใช้ไฟล์. sh เพื่อเปิดตัวได้เสมอruby foo.rb
glenn jackman

ใน Dolphin คุณสามารถกด 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
อเล็กซานเดอร์เลคชู

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. ปิดหน้าต่างคุณสมบัติและดับเบิลคลิกที่ไฟล์ กล่องโต้ตอบจะปรากฏขึ้นให้คุณเลือกเรียกใช้สคริปต์ใน terminal:

    ป้อนคำอธิบายรูปภาพที่นี่


10
สิ่งนี้ไม่ทำงานใน Ubuntu 13.04 ยังคงเปิดใน gedit ต่อไปไม่เคยขอให้ฉันดำเนินการ แก้ไข: Nvm, imjustmatthew ตอบคำถามนี้
mpen

ก่อนที่จะใช้สิ่งนี้เราต้องทำการอนุญาตให้ไฟล์สำหรับการใช้งานโดยใช้ chmod chmod + x filename.sh หรือ chmod 755 filename.sh
Arvind Rawat

ฉันไม่มีป๊อปอัป! IDE จะเปิดทันทีไม่ใช่ป๊อปอัป
สีเขียว

ทำไมฉันถึงหา "run in terminal" ไม่พบที่ใดก็ได้บนอินเทอร์เฟซของฉัน? (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. คลิกเรียกใช้ใน terminal

ปัญหานี้มีปัญหา เทอร์มินัลจะปิดทันทีและคุณจะไม่สามารถเห็นเอาต์พุต

วิธีง่ายๆ

  1. เปิดแอปพลิเคชัน -> อุปกรณ์เสริม -> เทอร์มินัล
  2. ลากและวางไฟล์. sh ลงในเทอร์มินัลแล้วกด Enter

วิธีที่มืออาชีพทำ

  1. เปิดแอปพลิเคชัน -> อุปกรณ์เสริม -> เทอร์มินัล
  2. ค้นหาตำแหน่งของไฟล์. sh

    • ใช้คำสั่งlsและcd
    • lsจะแสดงรายชื่อไฟล์และโฟลเดอร์ในโฟลเดอร์ปัจจุบัน ลองดูสิ: พิมพ์ "ls" แล้วกด Enter
    • เมื่อคุณเห็นโฟลเดอร์ที่คุณต้องการเข้าไปแล้วให้วิ่งcdตามด้วยช่องว่างแล้วตามด้วยชื่อโฟลเดอร์
    • หากคุณเมื่อลงในโฟลเดอร์ที่คุณไม่ได้ต้องการเรียกใช้cd ..ไปหนึ่งระดับขึ้น
  3. เรียกใช้ไฟล์. sh

    • เมื่อคุณสามารถดูตัวอย่างscript1.shด้วยการlsเรียกใช้นี้:

      ./script.sh

ทำไมมันจึงเป็นวิธีที่ซับซ้อน?

เทอร์มินัลมีชุดเครื่องมือที่มีประสิทธิภาพมากมายที่สามารถเข้าถึงได้โดยการพิมพ์คำสั่ง ผู้เชี่ยวชาญด้านการค้นหาแฟ้ม .sh โดยการพิมพ์และls 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 ที่เปิดใน Nautilus จะถูกเปิดเป็น gedit เป็นค่าเริ่มต้นแทนที่จะแจ้งให้ผู้ใช้ดำเนินการ ในการเปิดใช้งานลักษณะการทำงานแบบคลาสสิกคุณต้องปรับการตั้งค่า:

Nautilus →เมนูแก้ไขการตั้งค่า→แท็บพฤติกรรม→คลิกที่ปุ่มตัวเลือกใกล้ถามทุกครั้ง


คนที่ถามคำถามนี้กำลังพูดถึงอูบุนตู 10.10
edwin

1
ขอขอบคุณ!!! ฉันไม่รู้ว่าทำไมพวกเขาถึงเปลี่ยนแปลงสิ่งนี้ไม่สามารถหาวิธีดำเนินการอะไรได้
mpen

1
นี่คือคำตอบที่ถูกต้องสำหรับ ubuntus ล่าสุด
gaRex

คุณจะไปที่ Nautilus ได้อย่างไรใน 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

หากสคริปต์ของคุณถูกเขียนอย่างถูกต้องสคริปต์จะทำงานโดยไม่มีข้อผิดพลาด ...

นี่คือตัวอย่างสด: นี่คือตัวอย่างสด


สิ่งนี้ใช้ได้สำหรับฉันที่จะติดตั้ง Netbeans บน ubuntu
RuD3B0y

1
Wb, @ RuD3B0y ฉันพยายามที่จะรักษาคำตอบที่ดีที่สุดสำหรับ noobs ไม่มีเนื้อหาไฮเทคหากคุณมีการแก้ไขบางอย่างที่คุณยินดี
TheExorcist

4

2 ขั้นตอนหลัก

  1. ในเทอร์มินัลใช้ gedit เพื่อเขียนและบันทึกสคริปต์ด้วยส่วนขยาย ".sh" ไปยังเดสก์ท็อป (แต่สามารถใช้โปรแกรมแก้ไขข้อความใด ๆ )

  2. เปิด Nautilus และคลิกขวาที่ไฟล์ script.sh

    • ภายใต้คุณสมบัติกล่องกาเครื่องหมาย "อนุญาตให้เรียกใช้ไฟล์ .. "

    • ในเมนู Nautilus คลิกไฟล์จากนั้นกำหนดลักษณะตามต้องการ

    • ตรวจสอบ "เรียกใช้ไฟล์ข้อความที่ปฏิบัติการได้เมื่อเปิด"

ตอนนี้เมื่อคุณคลิกสองครั้งที่ไฟล์บนเดสก์ท็อปก็ควรดำเนินการ ไม่ต้องการ.หรือ./


3
  1. คลิกขวาที่.shไฟล์และทำให้สามารถเรียกใช้งานได้

  2. เปิดเทอร์มินัล ( Ctrl+ Alt+ T)

  3. ลาก.shไฟล์ลงในหน้าต่างเทอร์มินัลแล้วดูอย่างน่ากลัว


1
ยินดีต้อนรับสู่ถาม Ubuntu! ฉันขอแนะนำให้แก้ไขคำตอบนี้เพื่อขยายด้วยรายละเอียดเฉพาะเกี่ยวกับวิธีการทำขั้นตอนแรก (ดูเพิ่มเติมฉันจะเขียนคำตอบที่ดีได้อย่างไรสำหรับคำแนะนำทั่วไปเกี่ยวกับคำตอบประเภทใดที่ถือว่ามีค่ามากที่สุดใน AskUbuntu)
David Foerster

3

มีสองสามวิธีในการทำเช่นนี้

ตัวเลือกที่ 1

  1. ในเทอร์มินัลเข้าถึงไดเรกทอรีที่ไฟล์ Bash กำลังใช้งานอยู่cd(เปลี่ยนไดเรกทอรี)

    อดีต cd Downloads

  2. วิ่ง bash <filename>.sh

    นอกจากนี้ยังทำงานกับไฟล์. run มีตัวอย่างของการใช้งานที่หน้าเว็บนี้ในการอัปเดต Rhythmbox

ตัวเลือก 2

  1. ในเทอร์มินัลนำทางไปยังไดเรกทอรีที่มีไฟล์ bash

  2. วิ่ง chmod +x <filename>.sh

  3. ใน Nautilus ให้เปิดไฟล์


3

สำหรับUbuntu 18.04มีการปรับเปลี่ยนเล็กน้อยเนื่องจากคุณไม่ได้รับกล่องโต้ตอบแบบผุดขึ้น

ดังนั้นสิ่งที่คุณต้องทำคือ:

คลิกขวาที่ไฟล์เลือกการตั้งค่า> เลือกแท็บพฤติกรรม> ทำเครื่องหมายตัวเลือก 'ถามว่าต้องทำอะไร' ภายใต้ไฟล์ข้อความที่ปฏิบัติการได้

ตอนนี้เมื่อคุณดับเบิลคลิกที่ไฟล์. sh ใด ๆ คุณจะได้รับป๊อปอัพคุณสามารถเลือกตัวเลือก "เรียกใช้ใน terminal" เพื่อเรียกใช้ไฟล์. sh ของคุณ

ป้อนคำอธิบายรูปภาพที่นี่


2

ใน Ubuntu 16.04 นี่เป็นวิธีการเปิดใน Terminal:

ไปที่File Manager > Edit > Preferences > BehaviorสำหรับและเลือกExecutable Text Files Ask each time

View Executable Files when they are openedปัญหาคือว่ามันเป็นชุดที่จะเริ่มต้น


1

หากคุณวางเชลล์สคริปต์หรือไฟล์สั่งการอื่น ๆ ที่คุณสร้างใน / usr / local / bin จะพบและดำเนินการโดยไม่ต้องระบุพา ธ โฟลเดอร์ในบรรทัดคำสั่งหรือเพิ่ม. / ลงในชื่อ ตัวอย่างเช่นฉันสร้างสคริปต์ bash 3 บรรทัดต่อไปนี้เพื่อแสดง UUID ของดิสก์:

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

ฉันเรียกไฟล์ uuid และวางไว้ใน / usr / local / bin สิ่งที่ฉันต้องการในบรรทัดคำสั่งคือ:

uuid

0

ฉันก็ประสบปัญหาเดียวกันเช่นกัน ฉันต้องการรันไฟล์. sh และเปิดด้วย Gedit บน CentOS 7 ดังนั้นนี่คือสิ่งที่ฉันทำ:

  1. ฉันไปยังเส้นทางของ.shไฟล์ที่ฉันต้องการดำเนินการ
  2. ฉันเปิดเทอร์มินัล
  3. และฉันก็ลากและวางลงบนหน้าต่างเทอร์มินัลและมันก็เอาไฟล์นั้นไปพร้อมกับพา ธ เป็นอินพุต
  4. กด Enter แล้วคุณก็ไปได้!

0

ปัญหาที่ฉันพบในดิสทริบิวชันเล็กน้อยคือพวกเขาซ่อนตัวเลือกการตั้งค่าใน Nautilus แต่เพื่อแก้ไขใน Ubuntu และดิสทริบิวชันอื่น ๆ ที่ใช้ Gnome3 เหมือนกัน (แท้จริงแล้วเพิ่งทำเวอร์ชั่น Fedora นี้แล้ว เป็นอย่างไรในอนาคต)

  1. ติดตั้ง dconf-editor

    sudo apt-get install dconf-editor
  2. ทำงานdconf-editorโดยใช้บัญชีผู้ใช้ที่คุณต้องการเช่นไม่รูท

    dconf-editor
  3. นำทางไปยังสคีมาต่อไปนี้:

    org.gnome.nautilus.preferences

  4. เปลี่ยนตัวเลือกเริ่มต้นเป็นไม่เปิดตามค่าเริ่มต้น:

    ค้นหาexecutable-text-activationคลิกคำdisplayและเปลี่ยนเป็นask

ที่จะทำให้คุณมีตัวเลือกในการแก้ไขดูหรือเรียกใช้ไฟล์ไปข้างหน้า


0

ฉันเป็น noob ใน Linux และฉันก็มีปัญหาเดียวกัน หากล้มเหลวทั้งหมด:

  1. เปิดเทอร์มินัล
  2. เปิดโฟลเดอร์ที่มีไฟล์. sh
  3. ลากและวางไฟล์ลงในหน้าต่างเทอร์มินัล
  4. เส้นทางของไฟล์ปรากฏในเทอร์มินัล Enterกด
  5. Voila ไฟล์. sh ของคุณทำงาน

-2

คุณยังสามารถใช้.ลูกเล่นพร้อมคำแนะนำสำหรับคำตอบอื่น ๆ

ตัวอย่างเช่น:

chmod +x filename.shสมมติว่าคุณได้ไปที่พา ธ ไปยังไฟล์แล้วให้เรียกใช้ไฟล์ด้วยคำสั่งอย่างใดอย่างหนึ่งต่อไปนี้:

sh filename.sh

./filename.sh

. filename.sh

2
คำเตือน : คำสั่งทั้งสามนี้ไม่เทียบเท่ากัน หาก Shebang ของคุณอ้างอิงไบนารีอื่น (เช่นสแต็ค) คำสั่งที่สามจะลองแยกอาร์กิวเมนต์ด้วย Bash ซึ่งจะล้มเหลว
Jezen Thomas
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.