ตัวแปร Unix PATH คืออะไรและฉันจะเพิ่มมันได้อย่างไร


11

แบบฝึกหัดการเขียนโปรแกรมจำนวนมากขอให้ผู้ใช้เพิ่มบางสิ่งลงไปPATHแต่ไม่อธิบายว่ามันคืออะไร ทรัพยากรที่มีอยู่ที่อธิบายPATHถึงผู้ใช้ใหม่ในบรรทัดคำสั่งนั้นไม่ค่อยดีนัก

  • PATHตัวแปรUnix คืออะไร

  • command not foundฉันเพียงแค่ดาวน์โหลดโปรแกรมแล้วพยายามที่จะเรียกใช้คำสั่งในสถานีและมี สิ่งนี้เกี่ยวข้องกับPATHอะไร?

  • ฉันได้เพิ่มบางอย่างลงในPATHคำสั่งนี้แล้วก็ทำงานได้:

    export PATH=/path/to/some/bin:$PATH
    

    ... แต่แล้วฉันก็command not foundกลับมาอีกครั้งในครั้งต่อไปที่ฉันเริ่มคอมพิวเตอร์ ฉันจะทำให้มันอยู่ในPATHทุกครั้งที่ฉันเปิด Terminal ได้อย่างไร

  • เป็นวิธีที่ดีที่สุดในการตรวจสอบว่าโปรแกรมเช่น Git หรือgccโหลดบนคอมพิวเตอร์ของฉันแล้ว?


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

4
ฉันพนันได้เลยว่าฉันจะหา 50 เพลงฮิตถ้าฉันค้นหา google สำหรับคำถาม ทำไมคุณถึงทำไม่ได้?
trojanfoe

2
และหากไม่มีลิงก์ใดที่ชี้ไปยัง SO สำหรับคำถามที่มีคุณสมบัติเหมาะสมที่จะอยู่ที่นี่ก็ควรเพิ่มที่นี่ เราต้องการให้ SO เป็นที่ที่ Google ไปถามคำถามการเขียนโปรแกรม

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

1
@ jmort253: เอาละเขาควรเริ่มทำเร็ว ๆ นะ 4/5 ปิดโหวต ฉันจะไม่ปิดเพราะฉันรู้ว่าต้องการแก้ไขคำถาม แต่เขาควรทำให้เร็วขึ้น
Madara's Ghost

คำตอบ:


17

เส้นทาง UNIX เป็นตัวแปรสภาพแวดล้อมซึ่งเป็นรายการของไดเรกทอรีที่จะค้นหาโปรแกรมที่คุณพยายามเรียกใช้ อนุญาตให้คุณหลีกเลี่ยงการใช้ชื่อพา ธ ที่สมบูรณ์สำหรับการเรียกใช้สิ่งต่าง ๆ เช่น/bin/ls(โดยการใส่/binในพา ธ )

ตัวอย่างเช่นเส้นทางอาจประกอบด้วย:

/bin:/usr/bin:/usr/sbin

และนั่นหมายความว่าเมื่อคุณพิมพ์คำสั่งxyzzyมันจะพยายามเรียกใช้ไฟล์แรกที่พบจากรายการปัจจุบัน:

/bin/xyzzy
/usr/bin/xyzzy
/usr/sbin/xyzzy

( อาจข้ามไฟล์ที่ไม่สามารถเรียกใช้งานได้หากไฟล์นั้นเป็นไฟล์ที่ฉลาด)

คุณสามารถเพิ่มสิ่งต่าง ๆ ในเส้นทางด้วยคำสั่งเช่น:

set PATH=/directory/to/add:$PATH:/low/priority/path

ตำแหน่งใด/directory/to/addที่จุดเริ่มต้นของรายการค้นหาพา ธ และ/low/priority/pathท้ายสุด

อย่างไรก็ตามสิ่งนี้มักจะเปลี่ยนสำหรับเชลล์ปัจจุบันเท่านั้น ถ้าคุณต้องการที่จะทำให้การเปลี่ยนแปลงในทุกเปลือกคุณควรเพิ่มบรรทัดที่หนึ่งแฟ้มเริ่มต้นของคุณเช่นหรือ$HOME/.profile /etc/profileไฟล์ที่ถูกต้องที่จะใช้นั้นขึ้นอยู่กับเชลล์ของคุณและวิธีการตั้งค่าไฟล์เริ่มต้น ไม่ใช่เรื่องง่ายเสมอไปที่จะบอกว่าควรไปที่ไหน แต่มักจะอธิบายกฎใน manpage สำหรับเชลล์ที่คุณใช้

โดยปกติคุณสามารถค้นหาคำสั่งในพา ธ ด้วยหนึ่งใน:

which cmd
whence cmd

เพื่อค้นหาcmdไฟล์ปฏิบัติการ ตัวอย่างเช่นในระบบ Debian ของฉันฉันได้รับการถอดเสียงต่อไปนี้:

pax> which ls
/bin/ls

pax> which firefox
/usr/bin/firefox

pax> which xyzzy

pax> 

1
คำถามนี้อยู่ใน stackoverflow หรือไม่
trojanfoe

@ โทรจัน foe มากเท่าที่คำถามที่เกี่ยวข้องกับเชลล์ใด ๆ ใช่ฉันคิดอย่างนั้น นอกจากนี้ยังเป็นภาษาโปรแกรม

ฉันแก้ไขคำตอบเพื่อใช้:เป็นตัวคั่นตามที่ใช้กับ * ระวัง Windows ใช้;(อาจเป็นเพราะ:มีความหมายอยู่แล้วC:)
Joachim Sauer

ที่จริงแล้ว @Joachim มันอาจจะถูกกว่าที่จะพูดว่าเชลล์ที่ให้มา(แทนที่จะเป็น UNIX เอง) มีตัวคั่นไดเรกทอรีที่เฉพาะเจาะจง ขอบคุณสำหรับการแก้ไขไชโย

@paxdiablo: ใช่ฉันคิดเกี่ยวกับเรื่องนี้ แต่ฉันก็ไม่สามารถคิดถึง unix shell ใด ๆ ที่ไม่ได้ใช้:(ใน Java ตัวอย่างเช่นใช้บน * nix path.separatorเสมอ:)
Joachim Sauer

5

คืออะไร?

ตัวแปรสภาพแวดล้อม PATH เป็นรายการที่คั่นด้วยโคลอนของไดเรกทอรีที่เชลล์ของคุณค้นหาผ่านเมื่อคุณป้อนคำสั่ง

วิธีการตั้งค่า

PATH=$PATH:/your/directory
export PATH

ฉันจะทำให้มันอยู่บนเส้นทางทุกครั้งที่เปิด Terminal ได้อย่างไร

ใส่สองบรรทัดก่อนหน้าข้างใน~/.bash_profile(ถ้าคุณใช้bashสำหรับเทอร์มินัล)


3

PATH เป็นตัวแปรสภาพแวดล้อมสำหรับยูนิกซ์เช่นระบบ

กำหนดเส้นทาง:

export PATH=$PATH:<your path>

เส้นทางที่ไม่ได้กำหนด:

unset $PATH

กำหนดเส้นทางอย่างถาวร

ในโฟลเดอร์บ้านของคุณเปิดใช้งานมุมมอง -> แสดงไฟล์ที่ซ่อน .... ไฟล์. bash_profile ปากกาก่อนที่จะส่งออกเส้น PATH เพิ่มบรรทัดนี้ .....

PATH=$PATH:<yourpath>

ออกจากระบบและลงชื่อเข้าใช้อีกครั้ง ...... ตรวจสอบว่ามันทำงานได้ดีหรือไม่! มันควรจะทำงาน .....


1
ขออภัยสำหรับ downvote แต่นี่เป็นรูปแบบและคุณภาพที่ไม่ดี พยายามหลีกเลี่ยงการใช้ตัวหนามากเกินไปใช้จุดไข่ปลา ("... ") มากเกินไปและเขียนประโยคเต็ม ที่จะช่วยหลีกเลี่ยงการ downvotes ดังกล่าวในอนาคต
โจอาคิมซาวเออร์

1
@Joachim Sauer ทำไมคุณไม่แก้ไขคำตอบ? ทำไมคุณถึงต้องการลงคะแนน?

1
@MikroDel: เนื่องจากมีคำตอบที่ดีกว่าคุณภาพสูงกว่าสำหรับคำถามนี้และการลดลงนั้นใช้ความพยายามน้อยกว่า หากนี่เป็นคำตอบเดียวที่ฉันอาจแก้ไขได้ นอกจากนี้: ถึงแม้ว่าพวกเขามักจะไม่สนุก แต่ downvotes เป็นเครื่องมือที่ชอบด้วยกฎหมาย (ใช่มีลูกศรขึ้นและลงถัดจากแต่ละคำถาม / คำตอบ)
Joachim Sauer

1
แก้ไขหรือโพสต์ความคิดเห็นนี้ใช้เวลาใกล้เคียงกัน แต่แก้ไขให้ดีขึ้นและช่วย Shantanu Banerjee และผู้ใช้รายอื่น

@MikroDel: เพื่ออธิบายเหตุผลที่อยู่เบื้องหลัง downvote ไม่ได้ช่วยให้ผู้ใช้? ฉันคิดว่าเหตุผลของฉันค่อนข้างชัดเจนและได้ให้คำแนะนำที่เป็นประโยชน์เกี่ยวกับการปรับปรุงคุณภาพ สิ่งเดียวที่คุณยืนยันก็คือมันลดความตั้งใจของฉันที่จะอธิบาย downvote ของฉัน (และอย่างที่คุณเห็นในโปรไฟล์ของฉันฉันไม่ downvote มากเกินไป)
โจอาคิมซาวเออร์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.