วิธีการรันสคริปต์หลามจากคอนโซลโดยไม่ต้องเขียนเส้นทางแบบเต็ม?


8

ฉันมีสคริปต์หลามสองสามตัวใน / usr / share / สคริปต์ / ที่ฉันใช้บ่อยและฉันต้องการที่จะสามารถดำเนินการได้โดยเพียงแค่เขียนชื่อและไม่ใช่เส้นทางแบบเต็มฉันจะทำสิ่งนี้ได้อย่างไร

echo $ PATH แสดงให้ฉันเห็น:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/real/RealPlayer

ดังนั้นฉันจึงพยายามเขียนลงบนเทอร์มินัล:

PATH="/usr/share/scripts/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/real/RealPlayer"
export

ไม่มีข้อผิดพลาดปรากฏขึ้นและสะท้อน $ PATH ตอนนี้แสดงเส้นทางสคริปต์ใหม่ของฉัน แต่เมื่อฉันเรียกใช้scriptNameฉันไม่พบคำสั่ง

ผมทำอะไรผิดหรือเปล่า?


คุณเคยทำมาก่อนไหม?
Ignacio Vazquez-Abrams

ฉันไม่ได้ทำมาก่อน
grerdas

คุณไม่ได้รันพวกเขาเหรอ? ฉันคิดว่าคุณบอกว่าคุณใช้พวกเขามักจะ ...
อิกนาซิโอ Vazquez อับราฮัม

@Ignacio Vazquez-Abrams: โอ้ฉันไม่เข้าใจคำถามของคุณขอโทษฉันวิ่งพวกเขาเหมือน "
/usr/share/scripts/scriptName.py

คำตอบ:


9

ตั้งค่าการอนุญาตสำหรับสคริปต์ไพ ธ อนโดย "chmod + x *"
ตอนนี้คุณมีสองตัวเลือก:

  • เพิ่มไดเรกทอรีสคริปต์ของคุณไปยังตัวแปรเส้นทาง env หรือ
  • สร้างลิงก์สัญลักษณ์ไปยังสคริปต์ของคุณทีละหนึ่ง (หรือเขียนสคริปต์อื่นเพื่อทำแบบเดียวกัน) ใน/usr/local/binไดเรกทอรี

ตัวอย่าง:
[mzed@node02 test]$ vim printme.py

เนื้อหาของไฟล์:

#!/usr/bin/python
print "This is cool!"

-

[mzed@node02 test]$ mv printme.py printme
[mzed@node02 test]$ chmod +x printme
[mzed@node02 ~]$ cd /usr/local/bin/
[mzed@node02 bin]$ sudo ln -s ~/test/printme .
[mzed@node02 bin]$ ls
deskzilla  grails  grails-debug  printme  startGrails
[mzed@node02 bin]$ cd
[mzed@node02 ~]$ printme 
This is cool!
[mzed@node02 ~]$

ฉันหวังว่านี่จะช่วยคุณได้


มีความเป็นไปได้ที่จะสร้างเวอร์ชันสำหรับ Windows หรือไม่? (ฉันรู้ว่านี่เป็นคำถาม Linux)
Iulian Onofrei

1

ตกลงบางทีฉันแค่เป็นโรงเรียนที่เก่ากว่า ...
ใน / usr / bin เพิ่มเชลล์สคริปต์ด้วยส่วนหัว #! / bin / bash และไม่มีนามสกุล. sh จากนั้นในสคริปต์เหล่านั้นให้เรียกใช้ python absolutepath

ทำไมฉันคิดว่ามันดีกว่าคำตอบอื่น ๆ :
ไม่ต้องการ chmod-ing สคริปต์ของคุณเพื่อให้สามารถเรียกใช้งานได้
ไม่ต้องการเปลี่ยนชื่อสคริปต์ของคุณ


อย่าลืมสิ่งของ
juanitogan

0

ขออภัยที่แนะนำสิ่งพื้นฐาน .. คุณลองใช้ "scriptname.py" แทนที่จะเป็นเพียง "scriptname" หรือไม่

นอกจากนี้สคริปต์ทั้งหมดต้องมีสิทธิ์ดำเนินการ (คุณสามารถทำได้โดยการออก "chmod + x script.py") .. ตัดสินจากความคิดเห็นของคุณด้านบนเนื่องจากคุณเรียกใช้เช่น "/ usr / share / script / scriptName เนื้อหา "พวกเขาควรมีสิทธิ์ดำเนินการ

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