TL; DR
ข้อความสั่งพา ธ ของคุณ~/.bash_profile
ควรมีลักษณะเช่นนี้:
PATH=$PATH:~/git/scripts/
พื้นฐาน.....
มีสามปัญหาเกี่ยวกับวิธีที่คุณเขียน:
ไม่ควรใช้export
ฟังก์ชันเนื่องจากตัวแปร ( PATH
) อยู่ในสภาพแวดล้อมแล้ว เมื่อคุณเข้าสู่ระบบPATH
ตัวแปรจะถูกสร้างและตั้งค่า คุณไม่จำเป็นต้องใช้export
มันเพราะมันมีอยู่แล้ว
ลบเครื่องหมายคำพูดคู่ เครื่องหมายอัญประกาศคู่ทำให้เส้นทางถูกอ่านอย่างแท้จริงเพื่อไม่ให้~
เกิดการขยายโฮมไดเร็กทอรี เพื่อให้การขยายตัวหนอนทำงานไม่สามารถอยู่ในเครื่องหมายคำพูดได้ หากคุณต้องการตรวจสอบสิ่งนี้ที่บรรทัดคำสั่งให้พิมพ์ดังต่อไปนี้:
$ PATH="~/git/scripts:$PATH"
$ echo $PATH
~/git/scripts:/opt/local/bin:... <====== INCORRECT RESULT
$ PATH=~/git/scripts:$PATH
$ echo $PATH
/Users/foouser/git/scripts:/opt/local/bin:..... <====== CORRECT!
ทิลเดอพา ธ ของคุณ (โฮมไดเร็กตอรี่ส่วนตัว) ควรอยู่ท้ายคำสั่งพา ธ ของคุณ เส้นทางของคุณจะอ่านจากซ้ายไปขวานำหน้าเป็นลำดับ กล่าวอีกนัยหนึ่งหากมีคำสั่ง / ฟังก์ชั่นในโฮมไดเร็กตอรี่ของคุณที่มีชื่อเดียวกับที่มีอยู่แล้วในPATH
นั้นมันจะถูกดำเนินการ (พบ) ก่อนและอาจมีผลกระทบที่ไม่ตั้งใจ
เมื่อคุณทำการเปลี่ยนแปลงที่~/.bash_profile
คุณสามารถเริ่มต้นเซสชั่นของคุณหรือเพียงแค่แหล่งที่มาเช่นที่คุณทำมาก่อนและการเปลี่ยนแปลงจะเกิดขึ้น คุณสามารถยืนยันได้ว่ามันทำงานได้โดยการออกคำสั่งต่อไปนี้ (หรือทั้งสองอย่าง):
$ echo $PATH
$ which echoHelloWorld.sh
ครั้งแรกที่จะส่งออกPATH
ตามที่กำหนดและที่สองจะบอกคุณว่าในเส้นทางที่มันพบสคริปต์ของคุณ
~/git/scripts:$PATH
ไม่ถูกต้องbash
จะทำการขยายตัวหนอนในแต่ละองค์ประกอบของเส้นทางซึ่งแตกต่างจากเปลือกหอยอื่น ๆ ในกรณีนี้export PATH="~/git/scripts/:$PATH"
เครื่องหมายตัวหนอนไม่ใช่เส้นทางสัมพัทธ์