Właśnie napisałem testowy kod Pythona do test.py
i uruchamiam go w następujący sposób:
perl test.py
Po chwili zrozumiałem swój błąd. Mówię „po chwili”, ponieważ kod Pythona jest faktycznie poprawnie wykonywany, jak w interpreterze Pythona!
Dlaczego mój Perl interpretuje mój Python? test.py
wygląda tak:
#!/usr/bin/python
...Python code here...
Co ciekawe, jeśli zrobię coś odwrotnego (tj. Zadzwonię python something.pl
), otrzymuję dużo błędów składniowych.
#!
początku pliku. Rzeczywiście, jeśli usunę jej huk, uzyskam oczekiwane zachowanie. Czy nie jest to w każdym razie zły pomysł z punktu widzenia bezpieczeństwa?Odpowiedzi:
Z Perlrun ,
Na przykład,
$ cat a #!/bin/cat meow $ perl a #!/bin/cat meow
źródło
#! /usr/bin/env foo
.indir
był programem przeznaczonym do pośredniego wykonywania innych programów. Przypominam sobie, że miał być szczególnie przydatny w sytuacjach setuid, w których system operacyjny nie zapewniał natywnie bardzo pomożesz i / lub być może w sytuacjach, gdy jądro systemu operacyjnego ogranicza cię do 32-znakowych linii poleceń. "