เรื่องง่าย ๆ
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 ที่ทันสมัย) แต่คุณไม่น่าจะพบกับหอยเก่าเหล่านี้ได้