pourquoi `. / file.py` fonctionnait mais que` bash file.py` ne fonctionnait pas?

0

Pourquoi ./file.py travaillait, mais bash file.py ne fonctionne pas?
Quand je cours bash file.py ou . file.py ou source file.py obtenir une erreur comme ceci:
file.py: line 4: syntax error near unexpected .....
Mais ./file.py fonctionne bien.

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

mlibre
la source

Réponses:

4

Lorsque vous lancez un script (en tant que commande), il examine le hash-bang ( #! ) pour savoir quoi utiliser pour démarrer le script. Dans votre script, je parie que ça commence par #!/usr/bin/python ou similaire. Quand vous commencez comme ./script.py, il lit cette première ligne et exécute /usr/bin/python ./script.py secrètement.

Si vous le préférez en utilisant bash ./script.py, il s’attend à ce que l’interprète soit Bash, pas Python.

Canadian Luke
la source
1
Plus précisément, si vous utilisez bash ./script.py, il essaie de l'interpréter comme un script bash au lieu de python. Ses ne pas un script bash, donc la syntaxe est complètement fausse, et le résultat est erroné.
Gordon Davisson