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


11

ฉันต้องการเพิ่มพา ธ ไปยังPATHตัวแปรสภาวะแวดล้อมหรือไม่?

ฉันได้ลองด้วยexport PATH=/mypath:$PATHและใช้งานได้ แต่ครั้งต่อไปที่ฉันเริ่มต้น Terminal เส้นทางใหม่ของฉันไม่ได้PATHเปลี่ยนแปลงตัวแปรสภาพแวดล้อมอีกต่อไป

ฉันจะเพิ่มเส้นทางไปยังPATHตัวแปรสภาพแวดล้อมได้อย่างไร และควรจะมีในครั้งต่อไปที่ฉันเริ่มต้นเทอร์มินัล


ฉันมีปัญหากับเรื่องนี้อีกครั้งเคล็ดลับที่เคยทำมาก่อนดูเหมือนจะไม่ทำงานอีกต่อไป

ฉันได้ลองกับ:

echo 'export GRADLE_HOME=/Users/jonas/gradle-1.2/' >> ~/.profile
echo 'export PATH=GRADLE_HOME/bin:$PATH' >> ~/.profile

เพื่อเพิ่มตัวแปรสภาพแวดล้อมสองแบบ ถ้าอย่างนั้น~/.profileไฟล์ของฉันมีเนื้อหานี้:

export GRADLE_HOME=/Users/jonas/gradle-1.2/
export PATH=GRADLE_HOME/bin:$PATH

แต่เมื่อฉันเริ่มหน้าต่างTerminalใหม่และพิมพ์gradle(คำสั่งที่ฉันเพิ่มPATH) ฉันได้รับข้อความว่าไม่มีคำสั่งอยู่ ถ้าฉันเรียกใช้คำสั่งจาก/Users/jonas/gradle-1.2/binมันทำงานได้ดี!


หากคุณบังเอิญทำอะไรผิดพลาดดูเพิ่มเติม: รีเซ็ตตัวแปร PATH ของคุณ
Jari Keinänen

1
การกำหนดให้กับ PATH (การส่งออกครั้งที่สอง) ควรอยู่ที่ $ GRADLE_HOME
nohillside

คำตอบ:


5

echo 'export PATH=/my/path:$PATH' >> ~/.bash_profile ควรทำเคล็ดลับ!

หากคุณใช้echo 'export PATH=/my/path:$PATH' > ~/.bash_profileหรือรูปแบบใด ๆ คุณจะเขียนทับเนื้อหาในโปรไฟล์ของคุณ!


9

OSX อ่านไฟล์ต่อไปนี้ตามลำดับเมื่อเทอร์มินัลเปิดขึ้น:

/etc/profile
~/.bash_profile
~/.bash_login   
~/.profile     

ดังนั้นให้ใส่เส้นทางของคุณเป็นหนึ่งในนั้น ปกติฉันจะใส่สิ่งต่าง ๆ เข้าไป~/.bash_profile


2
ขอบคุณฉันใช้echo 'export PATH=/mypath:$PATH' >> ~/.profile
Jonas

3

นอกเหนือจากสถานที่ที่กล่าวถึงโดย @RobZolkos แล้วเชลล์ล็อกอินยังดู/etc/pathsและไฟล์ภายใน/etc/paths.d/ด้วย รายการพา ธ หนึ่งรายการต่อบรรทัดในไฟล์เหล่านี้

ดู/etc/profileและหน้าคู่มือpath_helperสำหรับ


โอเคขอบคุณ! แต่ปัญหาที่ใหญ่ที่สุดคือวิธีเพิ่มเส้นทาง แต่ฉันพบecho 'export PATH=/mypath:$PATH' >> ~/.profile
Jonas

@ โจนัส: ฉันตระหนักว่าปัญหาของคุณได้รับการแก้ไขแล้ว คำตอบของฉันมีไว้เพื่อประโยชน์ของผู้อ่านในอนาคตดังนั้นพวกเขาจึงสามารถเห็นตัวเลือกทั้งหมดที่มีให้
Harald Hanche-Olsen

2

คำถามเก่า แต่สำหรับผู้ใช้ MacOS X Catalina:

สร้าง / แก้ไข~/.zshenv:

# comment for yourself
PATH="$PATH:to/your/path"

ขอให้สังเกตว่าการปรับเปลี่ยนPATHใน~/.zprofileหรือไม่ถูกต้องก็ควรจะ~/.zshrc~/.zshenv

หากคุณต้องการผนวกบางสิ่งเพื่อPATHสร้าง / แก้ไขเพิ่มเติม~/.zprofile:

# apply the prepend to PATH
[[ -r ~/.zshenv ]] && source ~/.zshenv
# remove duplicate in PATH
typeset -U PATH

การอ้างอิง: http://zsh.sourceforge.net/Intro/intro_3.html


คุณหมายความว่าอย่างไรกับ "ถ้าคุณต้องการเสริมเส้นทาง" และทำไมไม่ทำ.zshenvเช่นนี้ด้วย?
nohillside

@ nohillside: ขอโทษสำหรับไวยากรณ์ที่ไม่ดีของฉัน แต่คำถามที่ดี หากคุณพยายามที่จะเติมอะไรบางอย่างลงไปPATHใน~/.zshenvโดยPATH="to/your/path:$PATH"ไม่มีบรรทัดใน~/.zprofileมันจะไม่ทำงาน โทรอะไรบางอย่างที่path_helperจะย้ายผู้ที่ด้านหน้าของ/usr/local/bin/:/usr/bin:... PATH
ฝนตก

ในระยะสั้นมันเป็นเรื่องของการสั่งซื้อสินค้า path_helperจะถูกดำเนินการหลังจากที่แต่ก่อน~/.zshenv ~/.zproflieและจากการศึกษาของฉันวันนี้ฉันขอแนะนำให้ใช้ symlink แทนการแก้ไขPATHซึ่งง่ายกว่ามาก
ฝนตก

0

แทรกใน. bashrc บรรทัดโค้ดเหล่านี้:

function pathadd {              # Add new element to PATH
  if ! echo $PATH | egrep -q "(:|^)$1(:|$)"
  then if [ "$2" = "after" ]
       then PATH="$PATH:$1"
       else PATH="$1:$PATH"
       fi
  fi
}

แล้วพิมพ์คำสั่งที่ชอบ: หรือpathadd /opt/local/binpathadd /opt/local/bin after


สังเกตทั้งสองฟังก์ชั่นใน init- github.com/fink/base-files/blob/master/init.sh.in
fd0
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.