“ ไม่ใช่ตัวระบุที่ถูกต้อง” เมื่อฉัน“ ส่งออก $ PATH”


37

เมื่อผมทำงานในทุบตีฉันได้รับข้อผิดพลาดexport $PATH not a valid identifierทำไม?


8
ใน bash และ shell อื่น ๆ$คือ“ value of” คุณกำลังส่งออกตัวแปรPATHไม่เข้าถึงความคุ้มค่าดังนั้นจึงไม่มีexport PATH $
Gilles 'หยุดความชั่วร้าย'

ปัญหาที่คล้ายกันทั่วไปที่พบบ่อย: askubuntu.com/questions/529919/…
Vadzim

คำตอบ:


40

การรันexport $PATHจะพยายามส่งออกตัวแปรที่มีชื่อเท่ากับค่าของ$PATH(หลังจากการแยกคำ ) export /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binนั่นคือมันเทียบเท่ากับการเขียนสิ่งที่ต้องการ และเนื่องจาก/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binไม่ใช่ชื่อตัวแปรที่ถูกต้องจึงล้มเหลว สิ่งที่คุณต้องการจะทำคือexport PATH

export(เทียบเท่าdeclare -x) ใน Bash ทำให้ตัวแปรพร้อมใช้งานสำหรับ subshells

หากต้องการพิมพ์ค่าของตัวแปรอย่างปลอดภัยและ readably printf %q "$PATH"ใช้


โดยทั่วไปฉันได้สร้างตัวแปรบางอย่าง JAVA_HOME, MAVEN_HOME และต้องการตรวจสอบให้แน่ใจว่า bash ตั้งค่าไว้ถูกต้องหรือไม่ดังนั้นฉันส่งออก $ PATH เพื่อดูว่าตัวแปรพา ธ ได้ตั้งค่าตัวแปร PATH ไว้อย่างถูกต้องหรือไม่
ThaSaleni

1
นี่คือการพึ่งพาเชลล์ไม่ใช่ OS ขึ้นอยู่กับ ฉันจะแปลกใจถ้าexportเคยทำงานแบบนั้นใน Bash
l0b0

นอกจากนี้ตัวแปร PATH ถูกส่งออกไปแล้วและไม่จำเป็นต้องส่งออกอีกครั้ง
Kusalananda

19

คำสั่งต่อไปนี้export $PATH=somePathจะกลับมาnot a valid identifierและนั่นเป็นเพราะ$ก่อนPATHตัวแปร

วิธีการแก้:

export PATH=somePath


0

คุณควรใช้วิธีนี้:

export PATH=$PATH:/something/bin

แทน:

export $PATH=$PATH:/something/bin

เพียงแค่ลบ$ป้ายจากด้านซ้ายมือ


-1

คุณอาจต้องการเพิ่ม $ PATH ต่อท้ายตัวแปร PATH ที่มีอยู่หรือไม่?

export PATH=$PATH:/something/bin

2
ตกลงนี้อยู่ในสวนลูกบอลเดียวกันกับคำถาม แต่มันอยู่นอกเขตข้อมูล
G-Man กล่าวว่า 'Reinstate Monica'
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.