ฉันจะแก้ไข PATH ของฉันได้อย่างไรเพื่อให้การเปลี่ยนแปลงนั้นมีอยู่ในเซสชันเทอร์มินัลทุกครั้ง


53

ฉันต้องการเพิ่มไดเรกทอรีเพื่อค้นหาเส้นทางการค้นหาของฉัน ฉันรู้ว่าฉันต้องแก้ไขPATHตัวแปรสภาพแวดล้อม อย่างไรก็ตามฉันต้องการให้การเปลี่ยนแปลงเป็นแบบถาวรเพื่อให้มีผลเสมอสำหรับทุกหน้าต่างเทอร์มินัล (ทุบตี) ที่ฉันเปิด

มีข้อมูลที่สับสนและอาจเกิดความขัดแย้งมากเกินไปในhttps://help.ubuntu.com/community/EnvironmentVariables

ฉันใช้ Ubuntu 10.04 สมมติว่าผมต้องการที่จะเพิ่มของฉัน/usr/local/foo PATHซึ่งไฟล์ ( .bashrc, .profile, .bash_loginฯลฯ ... ) ฉันควรแก้ไขและสิ่งที่บรรทัดใหม่ (s) ควรมีลักษณะอย่างไร

คำตอบ:


70

คำสั่งต่อไปนี้เพิ่มเส้นทางไปยังเส้นทางปัจจุบันของคุณ:

export PATH=$PATH:/my/custom/path

หากคุณต้องการให้การตั้งค่าของคุณดำเนินการคำสั่งนี้ทุกครั้งมีหลายสถานที่ที่คุณสามารถวางไว้ได้ เมื่อคุณเข้าสู่ระบบสคริปต์ต่อไปนี้จะถูกดำเนินการตามลำดับนี้:

/etc/profile      (which starts by loading everything in /etc/profile.d)
~/.profile        (which starts by loading ~/.bashrc if you are running bash)

หมายเหตุ

  • ~/.profile ถูกโหลดถ้าหาก~/.bash_profileและ~/.bash_loginไม่มีอยู่เท่านั้น มิฉะนั้นอย่างต่ำทุบตีจะโหลดพวกเขาแทน ขอแนะนำให้ใช้.profileไม่ใช่สคริปต์ทุบตีเฉพาะ ดังนั้นถ้าในความพยายามเหล่านี้ที่คุณสร้างขึ้น.bash_login, โปรดลบได้ในขณะนี้

  • ~/.bashrcถูกโหลดเมื่อคุณใช้เซสชันแบบโต้ตอบเท่านั้น (สิ่งที่มีพรอมต์ที่คุณสามารถพิมพ์บางสิ่ง)

  • ~/.bashrcจะโหลดอีกครั้งและอีกครั้งทุกครั้งที่คุณเปิดอาคารผู้โดยสารแห่งใหม่ ดังนั้นแท็บใหม่ใน gnome-terminal, terminal เสมือนใหม่เป็นต้นดังนั้นแม้ว่าคุณจะไม่ได้ลงชื่อเข้าใช้อีกครั้ง.bashrcก็จะถูกโหลด (และจะรีเซ็ตสภาพแวดล้อมของมัน) ทุกครั้งที่คุณเปิดเชลล์ใหม่

  • สิ่งที่ชอบ byobu ควรเข้าไปจริง ๆ.profile(ไม่อย่างนั้นมันจะใช้ไม่ได้ ;-)

  • สิ่งที่ต้องการเส้นทางควรเข้าไป.profileหากคุณต้องการให้พวกเขาทำงานนอกเซสชันแบบโต้ตอบ (พูดเมื่อคุณกดAlt+ F2ใน GNOME)


ฉันจะทำเครื่องหมายสิ่งนี้เป็นคำตอบหากคุณอัปเดตเพื่อรวมบรรทัดการส่งออกที่ร้องขอซึ่งควรเพิ่มใน. profile
Joshua Flanagan

สิ่งนี้เคยถูกต้องสำหรับการเข้าสู่ระบบคอนโซลเท่านั้น (เช่น ssh หรือเทอร์มินัลเสมือนที่สามารถเข้าถึงได้สำหรับ Ctrl + Alt + Fx) ฉันไม่รู้แหล่งที่มา / etc / gdm / Xsession ~ / .profile ทุกวันนี้ เรียบร้อย!
Marius Gedminas

ใช่ฉันไม่ได้พูดถึง / etc / gdm / Xsession โดยเฉพาะหรือ ~ / .Xprofile เพราะมีวิธีที่ดีกว่าในการเปิดตัวโปรแกรมกราฟิกเมื่อเริ่มต้นระบบซึ่งรับประกันได้ว่าส่วนที่เหลือของสภาพแวดล้อมนั้นโหลดแล้ว
Ralf

1
เพื่อให้คำตอบนี้ครอบคลุมมากขึ้นโปรดเพิ่มความคิดเห็นของ MattH เกี่ยวกับการจัดหา ~ / .profile เพื่อเปิดใช้งานการเปลี่ยนแปลงโดยไม่ต้องออกจากระบบ / รอบ
แมตต์วิลคี

1
@schwiz: ~/.profileไม่ได้ดำเนินการในแต่ละเทอร์มินัลมันถูกดำเนินการมาก่อนเมื่อเซสชันเดสก์ท็อปของคุณเริ่มต้น หนึ่งที่ดำเนินการในทุกสถานีคือ~/.bashrc
MestreLion

13

ฉันได้มันมาทำงานโดยการดัดแปลง ~/.profile

ดูเหมือนว่าการเพิ่ม ~ / bin ลงในพา ธ ของฉันเป็นตัวอย่างที่ไม่ดีเนื่องจากมีโค้ดใน ~ / .profile ที่ต้องทำโดยอัตโนมัติหากมีไดเรกทอรีอยู่

ในการเพิ่มไดเร็กทอรี usr / local / foo ลงในพา ธ ของฉันสำหรับทุกเซสชันที่ดำเนินไปข้างหน้าฉันจะเพิ่ม / แก้ไขบรรทัดต่อไปนี้ที่ส่วนท้ายของ. profile ของฉัน:

export PATH=$PATH:/usr/local/foo

อย่างไรก็ตามเพื่อให้สิ่งนี้มีผลบังคับใช้ฉันต้องออกจากระบบและลงชื่อเข้าใช้อีกครั้ง (เพียงปิดหน้าต่างเทอร์มินัลและการเปิดใหม่ไม่ได้ทำงาน)


4
ทำให้export PATH="$PATH:/usr/foo"ในกรณีที่คุณเคยมีช่องว่างหรืออักขระพิเศษอื่น $PATH
Gilles 'หยุดความชั่วร้าย'

3
คุณสามารถโหลดสภาพแวดล้อมปัจจุบันโดยไม่ต้องออกจากระบบโดยพิมพ์ ". ~ / .profile"
Matt H

1
@ MattH: ไม่สามารถทำได้ ถ้าคุณมา~/.profileในเทอร์มินัลที่กำหนดจะมีผลสำหรับเทอร์มินัลนั้นเท่านั้น
MestreLion

@MestreLion - คุณพูดถูก ฉันพูดถึงมันเพื่อความสะดวกสำหรับเทอร์มินัลปัจจุบัน ลืมที่จะเพิ่ม
Matt H

ถ้าฉันมีบางสิ่งบางอย่างใน PATH อยู่แล้ว ฉันสามารถต่อท้ายมันได้เหมือน PATHS ทำงานบน Windows ได้หรือไม่? เช่นฉันมีPATH="$HOME/bin:$HOME/.local/bin:$PATH"อยู่แล้ว
Gabriel Fair

4

ในการโหลด. profile และรับการเปลี่ยนแปลงโดยไม่ต้องออกจากระบบ / เข้าสู่ระบบให้รัน:

source ~/.profile

อันนี้ควรเป็นข้อคิดเห็นสำหรับคำตอบก่อนหน้า
Pavlo Zhukov

3

คุณสามารถเพิ่มพา ธ ไปยัง/etc/environmentได้ แต่ระวังว่าจะไม่มีการขยายเชลล์ ตัวแปรจะถูกตั้งค่าเป็นตัวอักษรที่คุณป้อนอย่างแท้จริง


จากสองวิธี (การเพิ่มคำสั่งส่งออกใน. profile และเพิ่มชื่อพา ธ แบบเต็มไปยัง PATH ใน etc / environment) ซึ่งควรเป็นที่ต้องการหรือไม่
Rohan Bhatia

2

คุณสามารถแก้ไข.bashrcไฟล์ใน$HOMEไดเรกทอรีของคุณ

ท้ายไฟล์นี้ให้เพิ่มบรรทัด:

export PATH="$HOME/directory_to_include_in_path/:$PATH"

คุณยังสามารถแก้ไข.profileไฟล์รวมถึงใน$HOMEไดเรกทอรีของคุณรวมถึงบรรทัดต่อไปนี้:

PATH="$HOME/directory_to_include_in_path/:$PATH"

สิ่งนี้ใช้ได้สำหรับฉัน


2
ฉันไม่เห็นสิ่งนี้จะเพิ่มคำตอบอื่น ๆ ที่อธิบายอย่างละเอียดมากขึ้น
Zanna

นี่คือคำตอบที่ถูกต้องหากคุณต้องการให้การเปลี่ยนแปลงมีผลกับหน้าต่างเทอร์มินัล การเปลี่ยนแปลง.profileไม่มีผลในหน้าต่างเทอร์มินัล
Markus Laire

0

หากคุณมี ohmyzsh ข้ามไดเรกทอรีบ้านผ่านเทอร์มินัลแล้วพิมพ์

nano .zshrc

เมื่อสิ้นสุดไฟล์ให้ป้อน

ส่งออก PATH = "$ HOME / directory_to_include_in_path /: $ PATH"

ในที่สุดรีสตาร์ท terminal ของคุณ ทำงานให้ฉัน หวังว่านี่จะเป็นประโยชน์


-3
Going through the basics, I will suggest the following steps:
1. It's recommended to set environment variables in /etc/environment
2. Open the file as superuser in an editor as it's a read only file e.g.     gedit:
gksu gedit /etc/environment
3. System will need password to open it in editable mode. Enter your superuser password and get file opened in a new gedit window. 
4. Add new line at the end of file with 
export PATH=$PATH:/usr/local/foo
5. Save and close the window. It will get command back to terminal.
6. Refresh the environment by running the following command: 
. /etc/environment
7. You may check by executing the following command:
 echo $PATH

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