ฉันจะรีเซ็ต $ PATH เป็นค่าเริ่มต้นใน Ubuntu ได้อย่างไร


31

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

โดยพื้นฐานแล้วผลลัพธ์เริ่มต้นของecho $PATHอะไร


1
ใส่ความคิดเห็นหรือแก้ไขบรรทัดการส่งออกและคุณควรไปได้ดี
Panther

~/.bashrcเป็นสถานที่ที่ไม่ถูกต้องในการตั้งค่าตัวแปรสภาพแวดล้อม คุณควรทำสิ่งนั้น~/.profileแทน
geirha

ใช่ฉันคิดออก PATH ยังคงใช้ได้ในหน้าต่างเทอร์มินัลอื่นที่เปิดก่อนหน้าใหม่ดังนั้นเพียงแก้ไขบรรทัดการส่งออกโดยเพิ่ม:$PATHที่ส่วนท้ายของการคืนค่าเส้นทาง และใช่ใน~/.profileมีรหัส "ชุดเส้นทางจึงรวมถึงถังส่วนตัวของผู้ใช้ถ้ามีอยู่" คือ$HOME/bin
Cee

คำตอบ:


35

คำตอบสำหรับคำถามของคุณคือ:

PATH=$(getconf PATH)

และทำงานบนระบบที่สอดคล้องกับ POSIX ใด ๆ คำตอบที่เลือกเป็นวิธีที่ถูกต้องในการขยายเส้นทางโดยไม่ทำให้เนื้อหาเดิมที่มีอยู่หลุด หากคุณใช้ bash คุณอาจพิจารณา:

PATH+=:$mynewdir

ฉันมีปัญหาในการใช้คำสั่งจำนวนมาก ( sed: No such file or directoryประเภทของปัญหา) หลังจากตั้งค่า PATH ของฉันโดยไม่ตั้งใจในระหว่างกระบวนการทำงานที่ยาวมาก (เช่นฉันไม่สามารถรีสตาร์ทได้) getconfฉันไม่สามารถใช้ $(export $(cat /etc/environment)":/usr/bin/additional:/usr/bin/paths")การรีเซ็ตเส้นทางของฉันฉันใช้ สำหรับคนที่อยากรู้อยากเห็น: /etc/environmentเป็นที่ที่ตัวแปร PATH ถูกตั้งค่าเริ่มต้นในหลาย ๆ รสชาติของ Linux
Nick Bull

2
การทำงานนั้นจะทำให้ฉันประหลาดใจ บางที "ส่งออก" โดยไม่มีสิ่งที่อยู่รอบ ๆ "$ (... )" อาจจะมี แต่สิ่งที่เกิดขึ้นจะมี ใช้ "source / etc / .. " อย่างไรก็ตามลองใช้ "/ usr / bin / getconf" หากคุณไม่พบ "getconf"
บรูซ

ชอบความคิดสุดท้ายของคุณโดยใช้เส้นทางแบบเต็มมากกว่าในการมองย้อนหลัง! ขอบคุณสำหรับการตอบกลับ
Nick Bull

1
หากตัวแปร PATH ว่างเปล่าPATH=$(getconf PATH)จะไม่มีประโยชน์ แต่จะส่งผลให้bash: getconf: No such file or directory
Max N

1
หาก PATH ว่างเปล่าให้สังเกตความคิดเห็นด้านบน: ลอง "/ usr / bin / getconf" หากวิธีนี้ใช้ไม่ได้ผลคุณจะต้องเรียนรู้ว่าระบบของคุณหยุดคำสั่ง POSIX ไว้ที่ใดและใช้ไดเรกทอรีนั้น
Bruce

17

คุณสามารถค้นหาได้ใน / etc / environment:

$ /usr/bin/cat /etc/environment

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

ดังนั้นเพียงแหล่งที่มา:

$ source /etc/environment 
$ echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

1
แมวจะไม่ทำงานในลักษณะเช่นนี้ในคำตอบของคุณเนื่องจากไม่มี $ PATH
Josef Klimuk

คุณถูก. ฉันเพิ่งแก้ไขคำตอบ ขอขอบคุณ!
Manuel Jesus Rodriguez

8

การเพิ่ม: $ PATH ไปยังจุดสิ้นสุดของบรรทัดการส่งออกแก้ไขปัญหาเช่น export PATH=<directory to be added>:$PATH

ฉันเพิ่มบรรทัดนี้ลงใน~/.bash_rcไฟล์แทนที่จะเป็น~/.profileไฟล์เพื่อให้ฉันเห็นผลทันทีในเทอร์มินัลใหม่และด้วยเหตุผลอื่นตามข้อมูลที่นี่: https://superuser.com/questions/176404/linux-bash-not- โหลดรายละเอียดในเซสชั่นใหม่

สำหรับฉันผลลัพธ์เริ่มต้นของecho $PATHก่อนที่จะเพิ่มไดเรกทอรีใหม่คือ:

/ usr / lib / lightdm / lightdm: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / เกม


3

เส้นทางเริ่มต้นคือ

/home/_username_/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games 

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


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