เรื่องง่าย ๆ
PATH=$PATH:~/opt/bin
หรือ
PATH=~/opt/bin:$PATH
ขึ้นอยู่กับว่าคุณต้องการเพิ่ม~/opt/bin
ที่ส่วนท้าย (จะค้นหาหลังจากไดเรกทอรีอื่นทั้งหมดในกรณีที่มีโปรแกรมชื่อเดียวกันในหลายไดเรกทอรี) หรือที่จุดเริ่มต้น (จะค้นหาก่อนไดเรกทอรีอื่นทั้งหมด)
คุณสามารถเพิ่มหลายรายการในเวลาเดียวกัน PATH=$PATH:~/opt/bin:~/opt/node/bin
หรือรูปแบบในการสั่งซื้อทำงานได้ดี อย่าวางexport
ที่จุดเริ่มต้นของบรรทัดเนื่องจากมีภาวะแทรกซ้อนเพิ่มเติม (ดูด้านล่างภายใต้“ หมายเหตุเกี่ยวกับหอยอื่นที่ไม่ใช่ทุบตี”)
หากคุณPATH
ได้รับการสร้างขึ้นโดยองค์ประกอบที่แตกต่างกันคุณอาจท้ายด้วยรายการที่ซ้ำกัน ดูวิธีเพิ่มพา ธ โฮมไดเร็กทอรีที่จะค้นพบโดย Unix คำสั่งใด? และลบรายการ $ PATH ที่ซ้ำกันด้วยคำสั่ง awkเพื่อหลีกเลี่ยงการเพิ่มรายการที่ซ้ำหรือลบออก
การแจกแจงบางอย่างจะใส่~/bin
เส้นทางของคุณโดยอัตโนมัติถ้ามี
จะวางตรงไหน
ใส่เส้นในการปรับเปลี่ยนPATH
ใน~/.profile
หรือ~/.bash_profile
ถ้านั่นคือสิ่งที่คุณมี
โปรดทราบว่า~/.bash_rc
จะไม่อ่านโดยโปรแกรมใด ๆ และ~/.bashrc
เป็นไฟล์กำหนดค่าของอินสแตนซ์โต้ตอบของทุบตี ~/.bashrc
คุณไม่ควรที่จะกำหนดตัวแปรสภาพแวดล้อมใน สถานที่ที่เหมาะสมในการกำหนดตัวแปรสภาพแวดล้อมเช่นPATH
เป็น~/.profile
(หรือ~/.bash_profile
ถ้าคุณไม่สนใจเกี่ยวกับเปลือกหอยอื่น ๆ กว่าทุบตี) ดูความแตกต่างระหว่างพวกเขากับสิ่งใดที่ฉันควรใช้
อย่าวางไว้ใน/etc/environment
หรือ~/.pam_environment
: ไฟล์เหล่านี้ไม่ใช่ไฟล์เชลล์คุณไม่สามารถใช้การแทนที่เช่น$PATH
นั้นได้ ในไฟล์เหล่านี้คุณสามารถแทนที่ตัวแปรได้เท่านั้นไม่สามารถเพิ่มตัวแปรได้
ภาวะแทรกซ้อนที่อาจเกิดขึ้นในสคริปต์ระบบบางตัว
คุณไม่ต้องการexport
ถ้าตัวแปรอยู่ในสภาพแวดล้อมอยู่แล้ว: การเปลี่ยนแปลงใด ๆ ของค่าของตัวแปรนั้นจะสะท้อนให้เห็นในสภาพแวดล้อมPATH
¹ค่อนข้างอยู่ในสภาพแวดล้อมเสมอ ระบบยูนิกซ์ทั้งหมดตั้งค่าตั้งแต่ต้น (โดยปกติจะอยู่ในกระบวนการแรกจริง ๆ )
ณ เวลาล็อกอินคุณสามารถพึ่งพาPATH
สภาพแวดล้อมที่มีอยู่แล้วและมีไดเรกทอรีระบบบางส่วนอยู่แล้ว หากคุณกำลังเขียนสคริปต์ที่อาจทำงานได้เร็วในขณะที่ตั้งค่าสภาพแวดล้อมเสมือนบางประเภทคุณอาจต้องตรวจสอบให้แน่ใจว่าPATH
ไม่ว่างเปล่าและส่งออก: หากPATH
ยังไม่ได้ตั้งค่าสิ่งที่ต้องการPATH=$PATH:/some/directory
จะตั้งPATH
เป็น:/some/directory
และส่วนประกอบที่ว่างเปล่า ที่จุดเริ่มต้นหมายถึงไดเรกทอรีปัจจุบัน (เช่น.:/some/directory
)
if [ -z "${PATH-}" ]; then export PATH=/usr/local/bin:/usr/bin:/bin; fi
หมายเหตุเกี่ยวกับหอยอื่นที่ไม่ใช่ทุบตี
ใน bash, ksh และ zsh export
เป็นไวยากรณ์พิเศษและทั้งสองPATH=~/opt/bin:$PATH
และexport PATH=~/opt/bin:$PATH
ทำสิ่งที่ถูกต้องแม้ ในเชลล์สไตล์ Bourne / POSIX อื่น ๆ เช่น dash (ซึ่งอยู่/bin/sh
ในหลาย ๆ ระบบ) export
จะถูกวิเคราะห์คำสั่งทั่วไปซึ่งมีความแตกต่างสองประการ:
ดังนั้นในเชลล์อย่างเส้นประให้export PATH=~/opt/bin:$PATH
ตั้งPATH
เป็นสตริงตัวอักษร~/opt/bin/:
ตามด้วยค่าPATH
สูงสุดของช่องว่างแรก
PATH=~/opt/bin:$PATH
(การบ้านเปล่า) ไม่ต้องการคำพูดและทำสิ่งที่ถูกต้อง หากคุณต้องการใช้export
ในสคริปต์แบบพกพาคุณต้องเขียนexport PATH="$HOME/opt/bin:$PATH"
หรือPATH=~/opt/bin:$PATH; export PATH
(หรือPATH=$HOME/opt/bin:$PATH; export PATH
เพื่อความสะดวกในการพกพาแม้แต่บอร์นเชลล์ที่ไม่ยอมรับexport var=value
และไม่ได้ทำการขยายเครื่องหมายตัวหนอน)
¹ สิ่งนี้ไม่เป็นความจริงในเชลล์เป้าหมาย (เช่นในเชลล์บอร์นจริงไม่ใช่เชลล์สไตล์ POSIX ที่ทันสมัย) แต่คุณไม่น่าจะพบกับหอยเก่าเหล่านี้ได้