ฉันมีไฟล์ปฏิบัติการ ฉันต้องการที่จะดำเนินการปฏิบัติการใน terminal ที่มีชื่อเช่นเดียวกับคำสั่งอื่น ๆ
ผมจะสามารถนำปฏิบัติการของฉันใน/usr/local/bin
หรือฉันสามารถเพิ่มของมันไปPATH
~/.bashrc
ทั้งสองจะทำงาน
อะไรดีกว่า? มีความแตกต่างหรือไม่?
ฉันมีไฟล์ปฏิบัติการ ฉันต้องการที่จะดำเนินการปฏิบัติการใน terminal ที่มีชื่อเช่นเดียวกับคำสั่งอื่น ๆ
ผมจะสามารถนำปฏิบัติการของฉันใน/usr/local/bin
หรือฉันสามารถเพิ่มของมันไปPATH
~/.bashrc
ทั้งสองจะทำงาน
อะไรดีกว่า? มีความแตกต่างหรือไม่?
คำตอบ:
myscript
ยกตัวอย่างเช่นแจ้งให้เราถือว่าคุณมีการปฏิบัติการ คุณจำเป็นต้องเรียกใช้จากเทอร์มินัลเป็น
/path/to/myscript
การเปลี่ยนแปลงระดับผู้ใช้
หากคุณเพิ่มPATH
ไฟล์ปฏิบัติการนั้นลงไป~/.bashrc
คุณสามารถเรียกใช้ไฟล์ปฏิบัติการที่มีชื่อได้จากทุกที่เท่านั้น ( Avinash Rajระบุไว้แล้ว) ดังเช่น
myscript
แต่การเปลี่ยนแปลงจะได้รับผลกระทบในระดับผู้ใช้ ซึ่งหมายความว่าหากคุณมีผู้ใช้คนอื่นพวกเขาไม่สามารถเข้าถึงไฟล์ที่มีชื่อเท่านั้น หากพวกเขาได้รับอนุญาตที่เหมาะสมพวกเขาจำเป็นต้องเรียกใช้ปฏิบัติการเป็น
/path/to/myscript
นอกจากนี้คุณจะไม่สามารถเรียกใช้สคริปต์เป็นsudo ได้เนื่องจากไม่ได้อยู่ในPATH
รากเพื่อเรียกใช้ตามที่sudo
คุณต้องการ
sudo /path/to/myscript
การเปลี่ยนแปลงระดับระบบ
หากคุณใส่สคริปต์ลงในสคริปต์คุณ/usr/local/bin
สามารถเข้าถึงได้ทั้งระบบและสำหรับผู้ใช้ทั้งหมด ในกรณีนั้นผู้ใช้สามารถเรียกใช้ไฟล์ปฏิบัติการของคุณได้ (ขึ้นอยู่กับการมีสิทธิ์ที่เหมาะสม)
myscript
ในกรณีนั้นคุณสามารถเรียกใช้ไฟล์ปฏิบัติการได้เช่นsudo
เดียวกับ
sudo myscript
ตอนนี้เลือกวิธีหนึ่งขึ้นอยู่กับความต้องการของคุณ
การเพิ่มตำแหน่งของไฟล์ลง$PATH
ในตัวแปรของคุณใน~/.bashrc
ไฟล์ของคุณจะอนุญาตให้คุณเรียกใช้งานจากตำแหน่งใด ๆ เท่านั้นในขณะที่การวางตำแหน่งไว้/usr/bin/
จะช่วยให้ผู้ใช้ทุกคนในระบบของคุณสามารถเรียกใช้ไฟล์นั้นจากตำแหน่งใด ๆ
ทำไมถึงเป็นอย่างนั้น? เนื่องจาก~/.bashrc
ไฟล์ของคุณจะปรากฏให้คุณเห็นในฐานะผู้ใช้เท่านั้น ดังนั้นการเปลี่ยนแปลงตัวแปรทั้งหมดที่ทำจะ จำกัด อยู่ที่คุณ ในขณะที่การเพิ่มไฟล์ที่/usr/bin
จะช่วยให้ไฟล์ยังคงอยู่ที่นั่นสำหรับผู้ใช้ทั้งหมดและเนื่องจาก/usr/bin
มีอยู่ใน$PATH
ตัวแปรเว้นแต่มีใครบางคนลบมันจะช่วยให้ผู้ใช้ทุกคนสามารถดำเนินการได้จากที่ใดก็ได้
หากคุณใส่ไฟล์เรียกทำงานไว้ใน/usr/bin
หรือ/usr/local/bin
จากนั้นคุณจะสามารถเรียกใช้โปรแกรมดังกล่าวได้โดยการระบุชื่อเท่านั้น ( your-program
แทน/usr/local/bin/your-program
)
หากคุณเพิ่มไดเรกทอรีที่มีโปรแกรมลงใน~/.bashrc
ไฟล์แทนไฟล์PATH
ปฏิบัติการที่มีอยู่ในไดเรกทอรีนั้นสามารถเปิดใช้งานได้โดยพิมพ์ชื่อของมันเท่านั้น
เช่นเดียวกับส่วนเติมเต็มเพื่อ @souravc คำตอบ ...
สำหรับ "การเปลี่ยนแปลงระดับผู้ใช้" แทนที่จะแก้ไข~/.bashrc
ไฟล์คุณสามารถสร้างไดเรกทอรี$HOME/bin/
และวางสคริปต์ของคุณไว้ที่นั่น
ไดเรกทอรีจะถูกเพิ่มโดยอัตโนมัติไปยังPATH
(อย่างน้อยตั้งแต่ Ubuntu 12.04) ซึ่งหมายความว่าคุณจะสามารถเรียกใช้สคริปต์ / executables ทั้งหมดภายในไดเรกทอรีนั้นได้ง่ายๆ
myscript
แค่ 2 เซ็นต์ของฉัน :)
ป.ล. - ฉันพยายามโพสต์สิ่งนี้เป็นความคิดเห็นต่อคำตอบ @souravc แต่ฉันไม่มีชื่อเสียงเพียงพอ :-(