เพิ่มไบนารีให้กับเส้นทางของฉัน


15

ฉันมีไฟล์ปฏิบัติการ ฉันต้องการที่จะดำเนินการปฏิบัติการใน terminal ที่มีชื่อเช่นเดียวกับคำสั่งอื่น ๆ

ผมจะสามารถนำปฏิบัติการของฉันใน/usr/local/binหรือฉันสามารถเพิ่มของมันไปPATH ~/.bashrcทั้งสองจะทำงาน

อะไรดีกว่า? มีความแตกต่างหรือไม่?

คำตอบ:


12

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

ตอนนี้เลือกวิธีหนึ่งขึ้นอยู่กับความต้องการของคุณ


2

การเพิ่มตำแหน่งของไฟล์ลง$PATHในตัวแปรของคุณใน~/.bashrcไฟล์ของคุณจะอนุญาตให้คุณเรียกใช้งานจากตำแหน่งใด ๆ เท่านั้นในขณะที่การวางตำแหน่งไว้/usr/bin/จะช่วยให้ผู้ใช้ทุกคนในระบบของคุณสามารถเรียกใช้ไฟล์นั้นจากตำแหน่งใด ๆ

ทำไมถึงเป็นอย่างนั้น? เนื่องจาก~/.bashrcไฟล์ของคุณจะปรากฏให้คุณเห็นในฐานะผู้ใช้เท่านั้น ดังนั้นการเปลี่ยนแปลงตัวแปรทั้งหมดที่ทำจะ จำกัด อยู่ที่คุณ ในขณะที่การเพิ่มไฟล์ที่/usr/binจะช่วยให้ไฟล์ยังคงอยู่ที่นั่นสำหรับผู้ใช้ทั้งหมดและเนื่องจาก/usr/binมีอยู่ใน$PATHตัวแปรเว้นแต่มีใครบางคนลบมันจะช่วยให้ผู้ใช้ทุกคนสามารถดำเนินการได้จากที่ใดก็ได้


1

หากคุณใส่ไฟล์เรียกทำงานไว้ใน/usr/binหรือ/usr/local/binจากนั้นคุณจะสามารถเรียกใช้โปรแกรมดังกล่าวได้โดยการระบุชื่อเท่านั้น ( your-programแทน/usr/local/bin/your-program)

หากคุณเพิ่มไดเรกทอรีที่มีโปรแกรมลงใน~/.bashrcไฟล์แทนไฟล์PATHปฏิบัติการที่มีอยู่ในไดเรกทอรีนั้นสามารถเปิดใช้งานได้โดยพิมพ์ชื่อของมันเท่านั้น


1
ข้อมูลนี้เป็นเท็จคุณสามารถ stil เรียกใช้ไฟล์ปฏิบัติการได้แม้ว่าคุณจะไม่ได้อยู่ใน "ไดเรกทอรี"
Lekensteyn

นี่เป็นความเท็จได้อย่างไรโปรดอธิบายเพิ่มเติมอีกหน่อย
Avinash Raj

1
ตกลงฉันมีเวลายากที่จะอ่านคำตอบของคุณ (และทำให้เกิดข้อผิดพลาด) ดังนั้นฉันจึงแก้ไขเพื่อลบความสับสนและ remoting downvote หวังว่ามันจะช่วย
Lekensteyn

ดังนั้นคำถามคืออะไรดีกว่ากัน มีความแตกต่างหรือไม่? คุณไม่ได้พูดอะไรมากไปกว่า OP
Radu Rădeanu

ฉันตอบคำถามของระบบปฏิบัติการ แต่ไม่ใช่ในรูปแบบสั้น ๆ
Avinash Raj

0

เช่นเดียวกับส่วนเติมเต็มเพื่อ @souravc คำตอบ ...

สำหรับ "การเปลี่ยนแปลงระดับผู้ใช้" แทนที่จะแก้ไข~/.bashrcไฟล์คุณสามารถสร้างไดเรกทอรี$HOME/bin/และวางสคริปต์ของคุณไว้ที่นั่น

ไดเรกทอรีจะถูกเพิ่มโดยอัตโนมัติไปยังPATH(อย่างน้อยตั้งแต่ Ubuntu 12.04) ซึ่งหมายความว่าคุณจะสามารถเรียกใช้สคริปต์ / executables ทั้งหมดภายในไดเรกทอรีนั้นได้ง่ายๆ

myscript

แค่ 2 เซ็นต์ของฉัน :)

ป.ล. - ฉันพยายามโพสต์สิ่งนี้เป็นความคิดเห็นต่อคำตอบ @souravc แต่ฉันไม่มีชื่อเสียงเพียงพอ :-(

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