ทำไม `. / file.py` ทำงาน แต่` ทุบตี file.py` ไม่ทำงาน?


0

ทำไมถึง./file.pyทำงาน แต่bash file.pyไม่ทำงาน
เมื่อฉันทำงานbash file.pyหรือ. file.pyหรือsource file.pyรับข้อผิดพลาดเช่นนี้
file.py: line 4: syntax error near unexpected .....
แต่./file.pyทำงานได้ดี

file.py
#!/usr/bin/python3.4 if __name__ == "__main__": print("something")

คำตอบ:


4

เมื่อเริ่มต้นสคริปต์ (เป็นคำสั่ง) มันจะดูที่ hash-bang ( #!) เพื่อรู้ว่าจะใช้อะไรเพื่อเริ่มสคริปต์ ในสคริปต์ของคุณฉันเดิมพันว่ามันเริ่มต้นด้วย#!/usr/bin/pythonหรือคล้ายกัน เมื่อคุณเริ่มมัน./script.pyจะอ่านว่าบรรทัดแรกและดำเนินการ/usr/bin/python ./script.pyอย่างลับ ๆ

หากคุณเติมมันโดยใช้bash ./script.pyมันคาดว่าล่ามจะเป็น Bash ไม่ใช่ Python


1
หากคุณใช้อย่างแม่นยำยิ่งขึ้นbash ./script.pyก็จะพยายามตีความว่าเป็นสคริปต์ทุบตีแทนงูหลาม มันไม่ใช่สคริปต์ทุบตีดังนั้นไวยากรณ์ผิดทั้งหมดและมันผิดพลาด
Gordon Davisson
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.