วิธีการตั้งค่า $ PATH อย่างถาวรบน Linux / Unix


879

ฉันกำลังพยายามเพิ่มไดเรกทอรีไปยังเส้นทางของฉันดังนั้นมันจะอยู่ในเส้นทาง Linux ของฉันเสมอ ฉันได้พยายาม:

export PATH=$PATH:/path/to/dir

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

ฉันจะทำเช่นนั้นได้อย่างไรเพื่อให้การตั้งค่านี้เป็นแบบถาวร

คำตอบ:


230

มีหลายวิธีที่จะทำ ทางออกที่แท้จริงขึ้นอยู่กับวัตถุประสงค์

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

ระบบกว้าง

  1. /etc/environmentรายการที่ได้รับมอบหมายที่ไม่ซ้ำกันช่วยให้การอ้างอิง สมบูรณ์แบบสำหรับการเพิ่มไดเรกทอรีทั้งระบบเช่น/usr/local/something/binการตัวแปรหรือกำหนดPATH JAVA_HOMEใช้โดย PAM และ SystemD
  2. /etc/environment.d/*.confรายการที่ได้รับมอบหมายที่ไม่ซ้ำกันช่วยให้การอ้างอิง สมบูรณ์แบบสำหรับการเพิ่มไดเรกทอรีทั้งระบบเช่น/usr/local/something/binการตัวแปรหรือกำหนดPATH JAVA_HOMEการกำหนดค่าสามารถแบ่งออกเป็นหลายไฟล์โดยปกติหนึ่งไฟล์ต่อเครื่องมือ (Java, Go, NodeJS) ใช้โดย SystemD ที่โดยการออกแบบไม่ส่งค่าเหล่านั้นไปยังเชลล์ล็อกอินของผู้ใช้
  3. /etc/xprofileเชลล์สคริปต์ทำงานในขณะที่เริ่มเซสชัน X Window System สิ่งนี้รันสำหรับผู้ใช้ทุกคนที่เข้าสู่ระบบ X Window มันเป็นทางเลือกที่ดีสำหรับรายการที่ถูกต้องสำหรับผู้ใช้เช่นเดียวกับทุกๆPATH /usr/local/something/binไฟล์ถูกรวมโดยสคริปต์อื่นดังนั้นให้ใช้ POSIX เชลล์ไวยากรณ์ไม่ใช่ไวยากรณ์ของเชลล์ผู้ใช้ของคุณ
  4. /etc/profileและ/etc/profile.d/*เชลล์สคริปต์ นี่เป็นตัวเลือกที่ดีสำหรับระบบแบบเชลล์เท่านั้น ไฟล์เหล่านั้นถูกอ่านโดยเชลล์ในโหมดล็อกอินเท่านั้น
  5. /etc/<shell>.<shell>rc. เชลล์สคริปต์ นี่เป็นตัวเลือกที่ไม่ดีเนื่องจากเป็นเชลล์เดี่ยวที่เจาะจง ใช้ในโหมดที่ไม่ใช่การเข้าสู่ระบบ

เซสชันผู้ใช้

  1. ~/.pam_environment. รายการของการมอบหมายที่ไม่ซ้ำไม่อนุญาตให้อ้างอิง โหลดโดย PAM เมื่อเริ่มต้นเซสชันผู้ใช้ทุกครั้งที่ไม่เกี่ยวข้องหากเป็นเซสชันหรือเชลล์ระบบ X Window คุณไม่สามารถอ้างอิงตัวแปรอื่น ๆ รวมถึงHOMEหรือPATHดังนั้นจึงมีการใช้งาน จำกัด ใช้โดย PAM
  2. ~/.xprofileเชลล์สคริปต์ สิ่งนี้ถูกดำเนินการเมื่อผู้ใช้ล็อกอินเข้าสู่ระบบ X Window System ตัวแปรที่กำหนดที่นี่สามารถมองเห็นได้ในแอปพลิเคชั่น X ทุกตัว เลือกที่สมบูรณ์แบบสำหรับการขยายPATHที่มีค่าเช่น~/binหรือ~/go/binหรือกำหนดเฉพาะของผู้ใช้หรือGOPATH NPM_HOMEไฟล์ถูกรวมโดยสคริปต์อื่นดังนั้นให้ใช้ POSIX เชลล์ไวยากรณ์ไม่ใช่ไวยากรณ์ของเชลล์ผู้ใช้ของคุณ โปรแกรมแก้ไขข้อความกราฟิกหรือ IDE ที่เริ่มต้นด้วยทางลัดจะเห็นค่าเหล่านั้น
  3. ~/.profile, ~/.<shell>_profile, ~/.<shell>_loginเชลล์สคริปต์ มันจะมองเห็นได้เฉพาะสำหรับโปรแกรมที่เริ่มต้นจาก terminal หรือจำลอง terminal เป็นทางเลือกที่ดีสำหรับระบบแบบเชลล์เท่านั้น ใช้โดยเชลล์ในโหมดล็อกอิน
  4. ~/.<shell>rc. เชลล์สคริปต์ นี่เป็นตัวเลือกที่ไม่ดีเนื่องจากเป็นเชลล์เดี่ยวที่เจาะจง ใช้โดยเชลล์ในโหมดที่ไม่ใช่การเข้าสู่ระบบ

หมายเหตุ

Gnome on Wayland เริ่มเชลล์ล็อกอินของผู้ใช้เพื่อรับสภาพแวดล้อม มันใช้การกำหนดค่าล็อกอินเชลล์อย่างมีประสิทธิภาพ~/.profile , ~/.<shell>_profile, ~/.<shell>_loginไฟล์

คู่มือการใช้งาน

  • สิ่งแวดล้อม
  • environment.d
  • ทุบตี
  • ชน

เอกสารเฉพาะการกระจาย

ที่เกี่ยวข้อง

ความแตกต่างระหว่างล็อกอินเชลล์และเชลล์ที่ไม่ใช่ล็อกอิน?


4
ขอบคุณสำหรับคำตอบโดยละเอียดนี่ควรจะสูงขึ้น อาจ.bash_profileจะเพิ่มในรายการด้วยหรือไม่
James Ko

2
@JamesKo นั่นคือหมายเลข 4
trve.fa7ad

1
/etc/environmentผมคิดว่าคำตอบที่ดีที่สุดที่เป็นข้อเสนอแนะ แต่ฉันสามารถรีเฟรชได้โดยไม่ต้องออกจากระบบหรือไม่ บางครั้งฉันไม่ใช้ bash หรือ sh ดังนั้นจึงsource /etc/environmentไม่ทำงาน
banan3'14

2
คำตอบที่สมบูรณ์แบบที่สุดและในความคิดของฉัน ควรสูงขึ้นไปมาก
Peter Gloor

2
เหตุผลของฉันในการค้นหาหัวข้อนี้จริง ๆ แล้วไป ดีใจที่ได้เห็นฉันไม่ใช่คนเดียวที่รู้ว่า. bashrc ไม่ใช่สถานที่ที่เหมาะสม ;)
Peter Gloor

1039

คุณต้องเพิ่มลงใน~/.profileหรือ~/.bashrcไฟล์ของคุณ 

export PATH="$PATH:/path/to/dir"

ขึ้นอยู่กับสิ่งที่คุณทำคุณอาจต้องการ symlink ไปยังไบนารี:

cd /usr/bin
sudo ln -s /path/to/binary binary-name

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

source ~/.profile 
or
source ~/.bashrc

11
คำถามสองสามข้อ 1) ไม่ควรจะมีลำไส้ใหญ่ระหว่างและ$PATH /usr/bin2) ควรมี/usr/binแม้กระทั่ง 3) คุณไม่ควรใช้/usr/local/binหรือ
Batandwa

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

51
@AdamRobertson มันไม่ปลอดภัย - พิจารณาสถานการณ์เมื่อคุณแกะ tarball จากนั้นcdไปยังไดเรกทอรีที่คุณคลายมันเข้าไปแล้วเรียกใช้ls--- จากนั้นให้ตระหนักว่า tarball มีโปรแกรมที่เป็นอันตรายที่เรียกว่าlsอยู่
Lily Chung

21
สำหรับฉันมันคือ. bash_profile ไม่ใช่. profile ดูเหมือนว่านี่จะแตกต่างกันสำหรับทุกคน
donquixote

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

243

ใน Ubuntu /etc/environmentแก้ไข โดยมีวัตถุประสงค์เพียงอย่างเดียวคือการจัดเก็บตัวแปรสภาพแวดล้อม เดิมทีตัวแปร $ PATH ถูกกำหนดไว้ที่นี่ นี่คือการวางจาก/etc/environmentไฟล์ของฉัน:

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

ดังนั้นคุณสามารถเปิดไฟล์นี้เป็นรูทและเพิ่มสิ่งที่คุณต้องการ

สำหรับผลลัพธ์ทันทีให้รัน (ลองใช้ในฐานะผู้ใช้และรูทปกติ):

source /etc/environment && export PATH

UPDATE:

หากคุณใช้zsh(aka Z Shell) เพิ่มบรรทัดนี้ทันทีหลังจากความคิดเห็นใน/etc/zsh/zshenv:

source /etc/environment

ฉันพบสิ่งแปลกประหลาดเล็กน้อยบน Ubuntu 15.10 แต่ถ้าzshของคุณไม่ได้รับPATH ที่ถูกต้องนี่อาจเป็นสาเหตุ


13
ไม่ใช่ทุกระบบที่มี / etc / environment
user3439968

9
FWIW $PATHยังถูกกำหนด/etc/profileใน Arch Linux
Sparhawk

3
@ e-sushi จริง ๆ แล้วฉันตกใจที่ ฉันใช้ Ubuntu 14.04.1 ตัวฉันเอง และฉันสามารถสัญญากับคุณว่าไฟล์ดังกล่าวได้ถูกสร้างขึ้นมา
trve.fa7ad

2
หลังจากลองทุกข้อเสนอแนะภายใต้ดวงอาทิตย์ แต่ / etc / สภาพแวดล้อมและการที่พวกเขาทั้งหมดไม่ทำงานฉันก็สะดุดกับเรื่องนี้ ฉันยังอยู่ใน Ubuntu 14.04 และนี่เป็นเพียงคนเดียวที่เปลี่ยนตัวแปร PATH หลังจากรีบูต
Chockomonkey

4
ผู้ใช้ควรรีสตาร์ทพีซีหลังจากอัปเดตไฟล์สภาพแวดล้อม
Harish_N

70

ใส่ประกาศในexport ~/.bashrc. bashrc ของฉันมี:

export PATH=/var/lib/gems/1.8/bin:/home/fraxtil/.bin:$PATH

7
รีสตาร์ทจำเป็นหรือไม่
คลิกโหวต

2
ทำงานเมื่อฉันใส่นี่ใน.profile'ไม่พบ.bashrc
คลิกโหวต

มันอาจจะขึ้นอยู่กับระบบที่แน่นอน; ฉันไม่แน่ใจว่าเงื่อนไขใดเป็นตัวกำหนดไฟล์ที่ถูกเรียกใช้งาน ดีใจที่ปัญหาได้รับการแก้ไข
Fraxtil

12
@ คลิกโหวตคุณต้องทำsource ~/.bashrcเพื่อโหลด.bashrcการกำหนดค่าใหม่ จากนั้นมันจะทำงาน
BigSack

4
exportคำหลักเป็นสิ่งจำเป็นเฉพาะในกรณีที่PATHไม่ได้รับการตั้งค่าสถานะอยู่แล้วในฐานะที่เป็นตัวแปรสภาพแวดล้อม - ซึ่งมันเกือบจะไม่มีเงื่อนไข เพียงแค่PATH=/var/lib/gems/1.8/bin:/home/fraxtil/.bin:$PATHจะมีผลเช่นเดียวกัน
ชาร์ลส์ดัฟฟี่

30

คุณสามารถตั้งค่าได้$PATHอย่างถาวรใน 2 วิธี

  1. ในการตั้งค่าพา ธ สำหรับผู้ใช้เฉพาะ: คุณอาจต้องป้อนข้อมูล.bash_profileในโฮมไดเร็กตอรี่ของผู้ใช้

    เช่นในกรณีของฉันฉันจะตั้งค่าเส้นทาง java ในโพรไฟล์ผู้ใช้โพง

    [tomcat]$ echo "export PATH=$PATH:/path/to/dir" >> /home/tomcat/.bash_profile
  2. ในการตั้งค่าพา ธ ทั่วไปสำหรับผู้ใช้ระบบทั้งหมดคุณอาจต้องกำหนดพา ธ ดังนี้

    [root~]# echo "export PATH=$PATH:/path/to/dir" >> /etc/profile

3
ไฟล์ถูกตั้งชื่อ/etc/profilesด้วยsdistro ของคุณหรือไม่? sเหมืองแร่ไม่มี ฉันคิดว่าคุณพิมพ์ผิด
Chris Johnson

3
คุณอาจต้องการหลีกเลี่ยง $ ที่คุณกำลังเขียนไปยังไฟล์โปรไฟล์ เช่น echo "export PATH = \ $ PATH: / path / to / dir" >> / etc / profile วิธีการที่คุณผนวกเข้ากับตัวแปรเมื่อสคริปต์นั้นทำงานแทนที่จะตั้งค่าเป็นค่าตัวอักษรตามค่าที่แท้จริง เวลาของการดำเนินการคำสั่งเริ่มต้นนี้
BuvinJ

15

คุณสามารถใช้กับ Centos หรือ RHEL สำหรับผู้ใช้ท้องถิ่น:

echo $"export PATH=\$PATH:$(pwd)" >> ~/.bash_profile

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

หากคุณไม่ต้องการเข้าสู่ระบบอีกครั้งสามารถใช้:

source ~/.bash_profile

ที่โหลด# User specific environment and startup programsความคิดเห็นนี้มีอยู่ใน.bash_profile


12

คุณสามารถตั้งค่าอย่างถาวรโดยแก้ไขหนึ่งในไฟล์เหล่านี้:

/etc/profile (สำหรับผู้ใช้ทั้งหมด)

~/.bash_profile (สำหรับผู้ใช้ปัจจุบัน)

~/.bash_login (สำหรับผู้ใช้ปัจจุบัน)

~/.profile (สำหรับผู้ใช้ปัจจุบัน)

คุณยังสามารถใช้/etc/environmentเพื่อตั้งค่าตัวแปรสภาพแวดล้อม PATH แบบถาวร แต่ไม่รองรับการขยายตัวแปรมันไม่ได้รองรับการขยายตัวตัวแปร

สกัดจาก: http://www.sysadmit.com/2016/06/linux-anadir-ruta-al-path.html


7

ฉันสะดุดคำถามนี้เมื่อวานนี้เมื่อค้นหาวิธีการเพิ่มโฟลเดอร์ที่มีสคริปต์ของตัวเองไปที่ PATH - และรู้สึกประหลาดใจที่พบว่า~/.profileไฟล์ของฉัน(บน Linux Mint 18.1) มีสิ่งนี้อยู่แล้ว:

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

ดังนั้นสิ่งที่ฉันต้องทำคือสร้างโฟลเดอร์~/binและวางสคริปต์ของฉันไว้ที่นั่น


7

ฉันคิดว่าวิธีที่งดงามที่สุดคือ:

1. เพิ่มสิ่งนี้ในไฟล์ ~ / .bashrc เรียกใช้คำสั่งนี้

gedit ~ / .bashrc

เพิ่มเส้นทางของคุณภายใน

ส่งออก PATH = $ PATH: / opt / node / bin

2. แหล่งข้อมูล ~ / .bashrc

(Ubuntu)


6

คุณสามารถเพิ่มบรรทัดนั้นลงในไฟล์ config ของคอนโซล (เช่น. bashrc) หรือไปที่. profile


2
ฉันไม่มีไฟล์เหล่านั้นใน/home/(username)
คลิกโหวต

3
@ClickUpvote: คุณใช้เปลือกอะไร (และไฟล์ที่ขึ้นต้นด้วยจุดจะถูกซ่อนไว้คุณต้องมีสิ่งที่ต้องการls -aเห็นพวกเขา)
David Schwartz

ในกรณีที่คุณไม่มีไฟล์ใด ๆ (bashrc หรือโปรไฟล์) คุณสามารถสร้างไฟล์ด้วยตนเองและไฟล์เหล่านั้นจะถูกใช้โดยอัตโนมัติ
trve.fa7ad

4

เพิ่มตัวแปร PATH อย่างถาวร

โลก:

echo "export PATH=$PATH:/new/path/variable" >> /etc/profile

ท้องถิ่น (สำหรับผู้ใช้เท่านั้น):

echo "export PATH=$PATH:/new/path/variable" >> ~/.profile

สำหรับการรีสตาร์ททั่วโลก สำหรับrelogin ท้องถิ่น

ตัวอย่าง

ก่อน:

$ cat /etc/profile 

#!/bin/sh

export PATH=/usr/bin:/usr/sbin:/bin:/sbin

หลังจาก:

$ cat /etc/profile 

#!/bin/sh

export PATH=/usr/bin:/usr/sbin:/bin:/sbin
export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/new/path/variable

หรือคุณสามารถแก้ไขโปรไฟล์:

$ cat /etc/profile 

#!/bin/sh

export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/new/path/variable

อีกวิธีหนึ่ง (ขอบคุณ gniourf_gniourf):

echo 'PATH=$PATH:/new/path/variable' >> /etc/profile

คุณไม่ควรใช้เครื่องหมายคำพูดคู่ที่นี่! echo 'export PATH = $ PATH: / new / path / variable' ... และโดยคำสำคัญการส่งออกนั้นไม่มีประโยชน์อย่างมากเนื่องจากตัวแปร PATH นั้นถูกทำเครื่องหมายว่าส่งออกแล้ว - gniourf_gniourf


1
Nope คุณไม่ควรใช้เครื่องหมายคำพูดคู่ที่นี่! echo 'export PATH=$PATH:/new/path/variable'... และโดยexportหลักแล้วคำหลักนั้นไม่มีประโยชน์อย่างมากเนื่องจากPATHตัวแปรนั้นมีแนวโน้มว่าจะถูกทำเครื่องหมายว่าส่งออกแล้ว
gniourf_gniourf

ไม่คุณควรใช้เครื่องหมายคำพูดคู่เนื่องจาก $ PATH ในเครื่องหมายคำพูดเดี่ยวไม่ได้ถูกแก้ไข และการส่งออก BTW ก็มีประโยชน์เช่นกัน
user3439968

ฉันเข้าใจแล้ว. คุณสามารถใช้อัญประกาศคู่หรือใช้เครื่องหมายอัญประกาศเดี่ยวได้เนื่องจาก $ PATH สอดแทรกเมื่อเสียงสะท้อนดำเนินการหรือสอดแทรกเมื่อ / etc / profile ดำเนินการ
user3439968

1
@ user3439968 ที่จริงแล้วการเสนอราคาซ้ำจะทำให้เกิดปัญหามากมายหากคุณผนวกที่ $ PATH จากหลาย ๆ ไฟล์ พิจารณา: เมื่อคุณใช้เครื่องหมายคำพูดคู่, $ PATH จะถูกแปลเป็นสตริงแบบสแตติกที่มีไดเรกทอรี PATH ที่กำหนดไว้ก่อนหน้า ว่าคุณผนวกไปใช้/usr/local ~/.bashrcตอนนี้ถ้าคุณตั้งใจจะผนวก/opt/binเข้ากับตัวแปรเดียวกันโดยใช้/etc/bash.bashrc; $ PATH จะแปลเป็นสตริงแบบคงที่เดียวกันดังนั้น $ PATH จะถูกแทนที่แทนที่จะผนวกเข้ากับ ... มันจะเป็นเรื่องของการตั้งค่าระบบหนึ่งไฟล์มากกว่าอีกไฟล์หนึ่ง
trve.fa7ad

4

1. แก้ไขไฟล์ "/ etc / profile"

#vi /etc/profile

กดปุ่ม "i" เพื่อเข้าสู่สถานะการแก้ไขและเลื่อนเคอร์เซอร์ไปที่ท้ายไฟล์รายการเพิ่มเติม:

export PATH=$PATH:/path/to/dir;

กด "Esc" เพื่อออกจากสถานะแก้ไขสถานะ ': wq' บันทึกไฟล์

2. กำหนดค่าให้มีประสิทธิภาพ

source /etc/profile

อธิบาย: ไฟล์โปรไฟล์ใช้ได้สำหรับผู้ใช้ทุกคนหากคุณต้องการให้ถูกต้องสำหรับผู้ใช้ที่ใช้งานอยู่ให้ตั้งค่าไฟล์ ".bashrc"


4

หลังจากการวิจัยมากผมพบว่าวิธีการแก้ปัญหาที่ง่ายสำหรับการนี้ (ผมใช้ประถม OS ) แรงบันดาลใจจากต่อไปนี้การเชื่อมโยง

เรียกใช้คำสั่งต่อไปนี้เพื่อไฟล์ .bashrc เปิดในโหมดแก้ไข [คุณสามารถใช้ vi หรือบรรณาธิการอื่น ๆ ]

~$ sudo nano ~/.bashrc

เพิ่มบรรทัดต่อไปนี้ที่ท้ายไฟล์และบันทึก

export PATH="[FLUTTER_SDK_PATH]/flutter/bin:$PATH"

ตัวอย่างเช่น :

export PATH="/home/rageshl/dev/flutter/bin:$PATH"

ป้อนคำอธิบายรูปภาพที่นี่

ฉันเชื่อว่านี่เป็นทางออกถาวรสำหรับการตั้งค่าเส้นทางในการกระพือปีกใน Ubuntu distro

หวังว่านี่จะเป็นประโยชน์


3

ไฟล์ที่คุณเพิ่มคำสั่งส่งออกขึ้นอยู่กับว่าคุณอยู่ในโหมดเข้าสู่ระบบหรือไม่ใช่โหมดเข้าสู่ระบบ

หากคุณอยู่ในโหมดเข้าสู่ระบบไฟล์ที่คุณต้องการคือ / etc / bash หรือ /etc/bash.bashrc

หากคุณอยู่ในโหมดที่ไม่ใช่การเข้าสู่ระบบคุณกำลังมองหาไฟล์ /.profile หรือไฟล์ภายในไดเรกทอรี /.profiles.d

ไฟล์ดังกล่าวข้างต้นหากที่ตัวแปรของระบบอยู่


3

เพิ่มไปยัง/etc/profile.dโฟลเดอร์สคริปต์ที่[name_of_script].shมีบรรทัด: export PATH=$PATH:/dir. ทุกสคริปต์ภายใน/etc/profile.dโฟลเดอร์จะถูกดำเนินการโดยอัตโนมัติโดย/etc/profileเมื่อเข้าสู่ระบบ


เป็นวิธีแนะนำวิธีปรับแต่งสภาพแวดล้อมของคุณ
Yuriy

1
นี่เป็นเพียงถ้าคุณต้องการให้การตั้งค่าเป็นทั้งระบบซึ่งอาจไม่ใช่กรณีการใช้งานทั่วไป คนส่วนใหญ่ต้องการ (หรือควรต้องการ) พา ธ ที่จะตั้งค่าในเครื่องเนื่องจากผู้ใช้ / บทบาทส่วนใหญ่กำลังทำการดำเนินการที่แตกต่างกันตามบริบทและสมมติฐานที่คุณทำน้อยลง
mpowered

@mpowered ใช่นี่เป็นเพียงสำหรับทั้งระบบ หากคุณต้องการเปลี่ยนเส้นทาง localy คุณควรเพิ่มการส่งออกเดียวกันใน ~ / .profile หรือ ~ / .bashrc ที่นี่คุณควรพิจารณาว่าเชลล์การเข้าสู่ระบบอ่าน ~ / .profile และเชลล์การโต้ตอบอ่าน ~ / .bashrc สิ่งนี้สำคัญมากเนื่องจากตัวอย่าง ssh ไม่ได้ทำการล็อกอินดังนั้น ~ / .profile จะไม่ถูกอ่าน การกระจายหลายอย่างเช่น suse source ~ / .bashrc ใน / etc / profile แต่ไม่ใช่เรื่องปกติสำหรับ linux ทั้งหมด '
Yuriy

3

Zues77 มีความคิดที่ถูกต้อง OP ไม่ได้พูดว่า "ฉันจะแฮ็คผ่านทางนี้ได้อย่างไร" OP ต้องการทราบวิธีผนวกผนวกกับ $ PATH อย่างถาวร:

sudo nano /etc/profile

ที่นี่เป็นที่ตั้งสำหรับทุกสิ่งและเป็นสถานที่ที่ดีที่สุดในการเปลี่ยนทุกสิ่งที่ต้องการ $ PATH


3

คำตอบของฉันคือการอ้างอิงถึงการตั้งค่าของgo-langon Ubuntu linux/amd64. ฉันได้ประสบปัญหาเดียวกันในการตั้งค่าเส้นทางของตัวแปรสภาพแวดล้อม ( GOPATHและGOBIN), สูญเสียมันในทางออกขั้วและสร้างขึ้นมาใหม่โดยใช้ source <file_name>ทุกครั้งความผิดพลาดคือการใส่เส้นทาง ( GOPATHและGOBIN) ใน~/.bash_profileโฟลเดอร์ หลังจากการสูญเสียชั่วโมงที่ดีไม่กี่ผมพบว่าการแก้ปัญหาคือการใส่GOPATHและGOBINใน~/.bash_rcไฟล์ในลักษณะที่:

export GOPATH=$HOME/go
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOPATH:$GOBIN

และการทำเช่นนั้นการติดตั้งเริ่มต้นทำงานได้ดีและไม่มีการสูญเสียเส้นทาง

แก้ไข 1: เหตุผลที่ปัญหานี้สามารถที่เกี่ยวข้องเป็นที่การตั้งค่าสำหรับเปลือกหอยที่ไม่ได้เข้าสู่ระบบของคุณเช่นอูบุนตูขั้วหรือคำพังเพยขั้วที่เราเรียกใช้รหัสการเดินทางที่นำมาจาก~./bash_rcไฟล์และการตั้งค่าสำหรับเปลือกหอยเข้าสู่ระบบที่นำมาจาก~/.bash_profileไฟล์และ จาก~/.profileไฟล์ถ้า~/.bash_profileไฟล์ไม่สามารถเข้าถึงได้


3

สมมติว่าคุณกำลังใช้งาน MacOS และคุณมีไบนารี่ที่คุณไว้ใจและต้องการให้มีอยู่ในระบบของคุณ แต่ไม่ต้องการไดเรกทอรีที่จะเพิ่มไบนารี่ใน PATH ของคุณคุณสามารถเลือกที่จะคัดลอก / ย้าย ไบนารีถึง/usr/local/binซึ่งควรอยู่ในเส้นทางของคุณแล้ว สิ่งนี้จะทำให้ไบนารีที่ปฏิบัติการได้เหมือนกับไบนารีอื่น ๆ ที่คุณสามารถเข้าถึงได้ในเทอร์มินัลของคุณ


3

สามารถเพิ่มโดยตรงโดยใช้คำสั่งต่อไปนี้:

echo 'export PATH=$PATH:/new/directory' >> ~/.zshrc
source ~/.zshrc

2
คำถามนี้มีป้ายกำกับbashดังนั้นจึงไม่ค่อยมีประโยชน์
Laurenz Albe

2
นี่เป็นคำตอบที่ถูกต้อง -> ชื่อกล่าวถึง Linux เท่านั้นดังนั้น bash และ ALSO zsh จะทำ ... หากการติดแท็กเป็นเพียง "bash" เราจำเป็นต้องเพิ่ม "zsh" ลงในแท็กด้วย
Carlos Saltos

2

วิธีที่ง่ายที่สุดคือบรรทัดต่อไปนี้:
PATH="<directory you want to include>:$PATH"
ในไฟล์. bashrc ของคุณในโฮมไดเร็กตอรี่
จะไม่ได้รับการรีเซ็ตแม้ว่าคุณจะปิดเครื่องหรือรีบูตเครื่อง PC ของคุณ มันถาวร


1
@quant หากคุณทำในสิ่งที่กล่าวมาจะเป็นการตั้งค่าของคุณอย่างถาวร มันจะทำงานแม้ว่าคุณจะปิดเครื่อง
Edward Torvalds

1

ฉันคิดว่าวิธีที่งดงามที่สุดคือ:

1. ใส่สิ่งนี้ในไฟล์~. / bashrc

if [ -d "new-path" ]; then
  PATH=$PATH:new-path
fi

2. แหล่งข้อมูล~ / .bashrc

(Ubuntu)


และเพื่อแสดงเส้นทางหลังจากด้านบน: printf "% s \ n" $ PATH
Robot70

1

วิธีหนึ่งในการเพิ่มเส้นทางถาวรซึ่งใช้งานได้สำหรับฉันคือ:

    cd /etc/profile.d
    touch custom.sh
    vi custom.sh 
    export PATH=$PATH:/path according to your setting/

รีสตาร์ทเครื่องคอมพิวเตอร์ของคุณและที่นี่เราไปเส้นทางจะมีการเชียร์อย่างถาวร


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

0

สำหรับการกระจายเดเบียนคุณต้อง:

    - edit ~/.bashrc  e.g: vim ~/.bashrc 
    - add export PATH=$PATH:/path/to/dir
    - then restart your computer. Be aware that if you edit ~/.bashrc  as root, your environment variable you added will work only for root

0

นี้เป็นหนึ่งซับ .bashrcมันจะเพิ่มเส้นไปยัง บรรทัด Tha จะตรวจสอบว่ามีการเพิ่มไดเรกทอรีลงในพา ธ แล้วและต่อท้ายถ้าไม่ .bashrcซึ่งจะช่วยป้องกันการทำซ้ำไดเรกทอรีของคุณในเส้นทางทุกครั้งที่คุณแหล่งที่มา

echo "[[ \":\$PATH:\" != *\":$(pwd)/path/to/add:\"* ]] && export PATH=\"\${PATH:+\${PATH}}:$(pwd)/path/to/add\"" >> ~/.bashrc

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