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"เครื่องหมายตัวหนอนไม่ใช่เส้นทางสัมพัทธ์