ฉันคิดว่ารากของปัญหาของคุณคือคุณไม่เข้าใจความแตกต่างระหว่าง Terminal Emulator และ Shell และวิธีที่ Linux คิดวิธีเริ่มกระบวนการ
อย่างแรกคือมี "Terminal Emulator" ในสภาพแวดล้อมที่ใช้ Gnome ซึ่งมักจะเป็น Gnome Terminal
จากนั้นมี "เชลล์" ใน Linux ซึ่งมักจะเป็น bash ถึงแม้ว่าเชลล์อื่น ๆ จะเป็นไปได้
"Shell" ทำงานภายใน "Terminal Emulator" ความแตกต่างนี้มาจากอายุของเทอร์มินัลฟิสิคัลซึ่งฟิสิคัลเทอร์มินัลคือฮาร์ดแวร์ที่รับอินพุตเขียนข้อความเป็นสี ฯลฯ และเชลล์เป็นซอฟต์แวร์ที่ประมวลผลคำสั่งผู้ใช้และจัดการกระบวนการอื่น ๆ ตามคำสั่งที่กำหนด
ทุกวันนี้เรามีหน้าจอวัตถุประสงค์ทั่วไปที่สามารถแสดงภาพใด ๆ ดังนั้นเราจึงไม่ใช้เทอร์มินัลทางกายภาพอีกต่อไป แต่มี "เทอร์มินัลอีมูเลเตอร์" ซึ่งเป็นซอฟต์แวร์ที่เลียนแบบการทำงานของเทอร์มินัลทางกายภาพและเชลล์ เชลล์ ole 'เหมือนเดิม (ดีเชลล์ทันสมัยใช้ประโยชน์จากการอยู่ในซอฟต์แวร์เทอร์มินัลอีมูเลเตอร์เช่นไม่ได้ถูก จำกัด โดยข้อ จำกัด ทางกายภาพของกระดาษ ฯลฯ แต่ยังคงมีการแบ่งแยก)
"Shell" ไม่ได้ทำงานใน Terminal Emulator เสมอไป นอกจากนี้ยังมี Graphical Shell เช่น Nautilus (คำใบ้คำใบ้ Nautilus เป็นชื่อของสัตว์ทะเลที่มีเปลือกหอยขนาดใหญ่) หรือ Windows Explorer (เพื่อไม่ให้สับสนกับ Internet Explorer)
ทั้งในเชลล์บรรทัดคำสั่งเช่น bash และเชลล์แบบกราฟิกเช่น Nautilus ไฟล์เรียกทำงานจะถูกทำเครื่องหมายด้วยการexecute
ตั้งค่าบิต
ในเชลล์บรรทัดคำสั่งคุณสามารถใช้ls -l
เพื่อดูบิตสิทธิ์ของไฟล์เช่น rwxrwxrwx หมายความว่าทุกคนสามารถอ่าน / เขียน / รันโปรแกรม rwxr-xr-- หมายถึงเจ้าของมีสิทธิ์เต็มรูปแบบคนในกลุ่มของไฟล์สามารถอ่านและดำเนินการ แต่ไม่เขียนและคนอื่นสามารถอ่านไฟล์ได้เท่านั้น ใน Nautilus คุณสามารถคลิกขวาที่ไฟล์> Properties> Permission tab ในหน้าคุณสมบัติการอนุญาตคุณสามารถรับอนุญาตของไฟล์คล้ายกับในเชลล์บรรทัดคำสั่ง
ไฟล์ที่มีชุดบิตเรียกใช้งานจะถือว่าเป็นไฟล์ปฏิบัติการและสามารถเรียกใช้งานได้โดยการทำ. / filename (เชลล์บรรทัดคำสั่ง) หรือดับเบิลคลิก (เชลล์กราฟิก)
สุดท้ายมีรายละเอียดปลีกย่อยอีกเล็กน้อยเกี่ยวกับวิธีที่เชลล์เรียกใช้งานไฟล์ ในเชลล์ Linux ส่วนใหญ่คุณสามารถ "เรียกใช้งาน" สคริปต์ที่เขียนใน python / perl / php / bash ที่ไม่ใช่ไฟล์ที่คอมไพล์ได้ เนื่องจากไฟล์เหล่านี้ไม่สามารถทำการประมวลผลได้อย่างเป็นธรรมชาติจึงจำเป็นต้องมีตัวแปลภาษา (เช่นตัวแปลภาษาไพ ธ อน) ไม่เหมือนกับใน Windows shell (Explorer) ซึ่งเป็นตัวแปลภาษาที่จะเรียกใช้ผ่านส่วนขยายของไฟล์ Linux shells แสดงล่ามที่ถูกต้องโดยดูที่บรรทัด "hashbang" ที่มีลักษณะเช่นนี้
#!/usr/bin/python
เมื่อบิตการดำเนินการของไฟล์ถูกตั้งค่าและไฟล์มีบรรทัด hashbang นี้เชลล์จะเรียกใช้ interpreter / usr / bin / python พร้อมกับไฟล์ปัจจุบันเป็นอาร์กิวเมนต์
Nautilus สามารถจดจำเมื่อโปรแกรมเป็นแอปพลิเคชันบรรทัดคำสั่งและจะเสนอให้คุณเรียกใช้แอปพลิเคชันภายในเทอร์มินัล เมื่อคุณคลิกสองครั้งที่สคริปต์ที่เรียกใช้งานได้ Nautilus จะถามว่าคุณต้องการเรียกใช้งานใน Terminal หรือไม่โดยไม่มี Terminal หรือแก้ไขไฟล์ใน Text Editor