ค่า $ PATH เริ่มต้นคืออะไร


คำตอบ:


18

ในการติดตั้ง Ubuntu บนเดสก์ท็อปเริ่มต้น$PATHคือ:

$ echo $PATH
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

แต่ในสภาพแวดล้อม chroot น้อยที่สุดที่สร้างขึ้นโดยdebootstrap, $PATHมีเพียง:

# echo $PATH
/usr/sbin:/usr/bin:/sbin:/bin

4

ค่าพา ธ สภาพแวดล้อมถูกเก็บไว้ในไฟล์. bashrcใน ubuntu

ตัวแปร PATH ทั่วทั้งระบบถูกกำหนดไว้ /etc/environment


3

มีเส้นทางที่ถูกสร้างขึ้นภายในเชลล์ซึ่งเป็น

echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

เส้นทางเริ่มต้นสำหรับ Ubuntu คือ:

echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

3

มีวิธีง่ายๆในการค้นหา:

printenv

หรือเพิ่มเติมโดยตรง:

echo $PATH

แต่ถ้าคุณแค่มองหาข้อมูลสั้น ๆ บางอย่างอูบุนตูมักจะกำหนดเส้นทางไปที่:

/ usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / bin / X11: / usr / เกม:

สำหรับคำถามเช่นนี้คุณจะสามารถขุดขึ้นคำตอบโดยการอ่านพระคัมภีร์


2

อาจแตกต่างกันไปขึ้นอยู่กับ Linux ที่คุณใช้ หากคุณมีล็อกอินเข้าสู่ linux แล้วให้พิมพ์ 'env' เพื่อดูตัวแปรสภาพแวดล้อมของคุณ

ถ้าคุณต้องการทราบวิธีสร้างตัวแปร PATH env ให้ดูที่. bashrc และ. bash_profile ในโฮมไดเร็กตอรี่ของคุณ หากอยากรู้เพิ่มเติมคุณสามารถดู / etc / profile, /etc/profile.d/* (ถ้ามี) และคู่มือสำหรับ bash (man bash)


2

bashจะตั้งPATHเป็นค่าเริ่มต้นที่ฮาร์ดโค้ดหากไม่ได้ตั้งค่าไว้ในสภาพแวดล้อม:

$ env -i bash -c 'echo $PATH'
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:.

เราสามารถตรวจสอบว่าค่านี้เป็นรหัสตายตัวจริงๆและไม่ได้อ่านจากสภาพแวดล้อมหรือไฟล์บางส่วนโดยใช้stringsยูทิลิตี้:

$ strings /bin/bash | grep /usr/sbin
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:.

อย่างไรก็ตามฉันได้รับผลลัพธ์ที่แตกต่างจากเครื่อง Arch Linux ของฉัน:

$ env -i bash -c 'echo $PATH'
/usr/local/sbin:/usr/local/bin:/usr/bin

ดังนั้นดูเหมือนว่าค่าเริ่มต้นนี้จะถูกเลือกในเวลาที่bashสร้างไบนารีซึ่งขึ้นอยู่กับการกระจาย Linux ที่ใช้งานอยู่


นี่เป็นคำตอบเดียวที่กล่าวถึงเชลล์และการแจกแจง ฉันสะดุดกับคำถามเพราะฉันสังคายนาปัญหา PATH ในคอนเทนเนอร์อูบุนตู และ "เส้นทางเริ่มต้น" จะขึ้นอยู่กับเชลล์ (bash, sh, ฯลฯ ) และไม่ว่าจะโหลดแบบโต้ตอบหรือไม่และไม่ว่าจะเป็นเปลือกเข้าสู่ระบบ มันไม่ใช่คำตอบง่ายๆ รุ่งโรจน์สำหรับการกล่าวถึงสตริง hardcoded ในไบนารี
init_js

1

หากต้องการดูเส้นทางเริ่มต้นให้ใช้คำตอบอื่น ๆ ที่กล่าวถึง:

echo $PATH

วิธีแก้ไขการใช้งาน:

gedit ~/.bashrc

เริ่มต้นนี้ตัวแปรที่กำหนดไว้ภายใต้PATH/etc/enviroment

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