Pertanyaan Mengapa Python di Linux memerlukan baris #! / Usr / bin / python?


Pertanyaan yang cukup sederhana: Di Linux, mengapa Python memerlukan garis

#!/usr/bin/python

pada awal file python, karena Windows tidak?

Apa fungsinya? Karena deskripsi "Tautan ke Python" agak kabur ...


50
2017-11-04 21:48


asal


Jawaban di bawah semuanya benar, tidak ada yang menjawab mengapa Windows tidak membutuhkan baris ini. Windows tergantung pada ekstensi file (bagian setelah file .) untuk menentukan jenis file apa itu. Bahkan Windows bergerak menjauh dari ini: memeriksa beberapa baris pertama dari file Microsoft Word, dan itu akan menyatakan bahwa itu sebenarnya, file Microsoft Word. - Charles Green
Gajah di dalam ruangan adalah bahwa Anda TIDAK PERNAH menggunakan / usr / bin / python kecuali Anda kompatibel dengan python 2 dan 3. Alasan: arch symlinks ke python3, sebuah langkah yang diakui oleh PSF, yang merekomendasikan untuk melawannya sendiri. - Yet Another User
Ini tersirat, tetapi tidak dinyatakan secara eksplisit dalam jawaban di bawah itu itu tidak diperlukan. Ini diperlukan jika Anda ingin menjalankan skrip hanya dari nama ts sendiri. Anda selalu bisa berlari python myscript.py sebagai gantinya. - Chris H
@CharlesGreen kita tidak seharusnya tahu mengapa windows tidak ;-) Itu terserah SO. - Rinzwind
@YetAnotherUser Sudah enam tahun dan sebelas bulan sejak Python 3 dirilis, pada titik ini saya merasa orang akan lebih baik dari default ke 3 dan secara eksplisit menetapkan penggunaan 2 bila diperlukan. - JAB


Jawaban:


Python tidak memiliki persyaratan khusus seperti itu di Linux. Ini adalah pemuat program di Unix / Linux yang menggunakan garis "shebang", seperti namanya. Ini sebenarnya adalah fitur dan bukan pembatasan, tetapi kita akan membahasnya sebentar lagi. Halaman Wiki di "shebang" memiliki lebih banyak detail, tetapi saya akan mencoba memberikan gambaran umum serta perbandingan dengan Windows di sini.

Pertama, mari kita lihat situasi di Windows:

  • Ketika Anda mencoba untuk membuka atau menjalankan file, Windows terlebih dahulu memeriksa perpanjangan file itu. Ini adalah terakhir bagian dari nama file dimulai dengan . Dalam kasus file Python, ini biasanya .py.
  • Windows mencari tindakan apa yang harus diambil berdasarkan ekstensi file.
    • Informasi ini dicatat dalam registri Windows; ketika Python diinstal, biasanya memberitahu Windows itu .py file harus dibuka menggunakan yang baru dipasang aplikasi Python (yaitu interpreter Python).
    • Beberapa tipe file memiliki perilaku bawaan; misalnya, file yang dapat dieksekusi (seperti interpreter Python itu sendiri) harus diakhiri .exe, dan .bat file dieksekusi sebagai skrip batch Windows.
    • Tindakan yang diambil untuk tipe file tertentu adalah dapat disesuaikan. Anda dapat, misalnya, memberi tahu Windows bahwa alih-alih menjalankan .py file menggunakan python.exe, seharusnya membukanya dengan beberapa program lain, seperti editor teks notepad.exe.
      • Dalam hal ini, dalam rangka menjalankan skrip Python, Anda perlu secara manual panggilan python <scriptname>.py (atau tulis a .bat file untuk melakukan ini untuk Anda).

Sekarang, apa yang terjadi jika ada garis shebang (#!/usr/bin/python atau #!/usr/bin/env python) di bagian atas skrip Python? Yah, sejak itu # adalah baris komentar di Python, penerjemah Python hanya mengabaikannya. Ini adalah salah satu alasan mengapa sebagian besar bahasa scripting digunakan di dunia Unix / Linux # untuk memulai baris komentar.

Jadi agak menyesatkan untuk mengatakan bahwa Windows "tidak perlu" #! garis; Windows tidak Lihat itu #! baris, dan pada kenyataannya bergantung pada ekstensi-file untuk mengatakan apa yang harus dilakukan. Ini memiliki beberapa kerugian:

  • Kamu harus beri nama skrip Python dengan .py pada akhirnya agar mereka secara otomatis diakui seperti itu.
  • Tidak ada cara mudah untuk membedakan skrip Python2 dari skrip Python3.
  • Seperti yang disebutkan sebelumnya, jika Anda mengubah perilaku peluncuran default untuk .py tipe file, Windows tidak akan lagi menjalankan skrip tersebut dengan Python secara otomatis. Perhatikan bahwa ini bisa dilakukan secara tidak sengaja.

Sekarang, mari kita lihat bagaimana Unix / Linux meluncurkan skrip:

Hal pertama yang perlu diperhatikan adalah bahwa Unix / Linux, tidak seperti Windows, tidak mencoba untuk "membuka" skrip Python menggunakan program tertentu, setidaknya secara konseptual; OS tahu bahwa skrip adalah sesuatu yang dapat dieksekusi karena sesuatu yang disebut "eksekusi bit" (yang berada di luar lingkup jawaban ini). Jadi, jika Anda tidak sengaja mengetik #!/usr/bin/pthon dari pada #!/usr/bin/python, Anda akan mendapatkan pesan kesalahan yang menyertakan teks ini:

/usr/bin/pthon: bad interpreter: No such file or directory.

Kata "interpreter" memberi kita petunjuk tentang peran garis shebang (meskipun secara teknis program yang ditentukan bisa menjadi sesuatu selain penerjemah, seperti cat atau editor teks). Ketika Anda mencoba untuk mengeksekusi file, inilah yang terjadi:

  • Program loader Unix / Linux melihat dua byte pertama dari file itu; jika dua byte ini #!, maka loader menafsirkan sisa garis shebang (tidak termasuk shebang itu sendiri) sebagai perintah untuk meluncurkan penerjemah yang dapat digunakan untuk menjalankan konten file sebagai skrip.
  • Loader program meluncurkan interpreter yang ditentukan, memberinya makan jalan dari file asli sebagai argumen.

Ini memiliki beberapa keunggulan:

  • Script-writer memiliki kontrol lebih terhadap interpreter mana yang akan digunakan (yang memecahkan masalah Python2 / Python3) dan terkadang dapat mengirimkan argumen tambahan kepada interpreter (lihat halaman Wiki untuk rinciannya).
  • Nama file dari skenarionya diabaikan, sehingga Anda dapat menyebutkan skrip Python apa pun yang Anda inginkan.

Perhatikan, akhirnya, yang dilakukan oleh Unix / Linux tidak  perlu garis shebang untuk menjalankan skrip Python. Ingat bahwa semua garis shebang sebenarnya adalah memungkinkan pemuat program memilih seorang penerjemah. Tetapi seperti pada Windows, ini dapat dilakukan secara manual:

python <myscript>

56
2017-11-05 22:25



Pada Windows Anda dapat dengan mudah memilikinya .py2 dan .py3 ekstensi untuk skrip Python 2 / Python 3. Jadi baik Linux (+ x bit) dan Windows (ekstensi file) membutuhkan metadata di sistem file. Perbedaan utamanya adalah + x bit lebih mudah hilang saat transit. Ini belum tentu sisi negatifnya. - MSalters
@MSalters Bit eksekusi juga memiliki banyak informasi yang disandikan di dalamnya. Dan perhatikan bahwa Anda mungkin memiliki beberapa penafsir Python2 pada sistem tertentu (ada situasi serupa dengan Ruby dan bahasa lain pada pekerjaan saya sebelumnya); berurusan dengan ini melalui garis shebang hampir sepele, sedangkan situasi pada Windows menjadi jauh lebih mudah dikerjakan, semakin Anda mencoba untuk mengelola beberapa jenis file yang serupa. - Kyle Strand
Juga, apakah ekstensi benar-benar dihitung sebagai "metadata"? Itu hanya bagian dari nama file. - Kyle Strand
Metadata file mencakup seluruh nama file, waktu pembuatan, bit akses, dll. Hanya konten itu sendiri adalah data, bukan metadata. Adapun "banyak penafsir", itu memang masalah nyata dan persis mengapa seharusnya tidak berada di garis shebang. Bagaimana jika Anda memilikinya /usr/bin/i686/python dan /usr/bin/amd64/python ? Sangat masuk akal, tetapi merusak skrip python yang memiliki asumsi hardcoded /usr/bin/python. Pilihan penerjemah bukan pilihan penulis skrip tetapi dari pengguna skrip, Penulis skrip hanya dapat memilih bahasa (dialek). - MSalters
@MSalters Yah, itulah yang terjadi /usr/bin/env, untuk, bersama dengan skrip env-setup. Apa versi Windows ini? Menjalankan a regedit skrip tepat sebelum Anda meluncurkan .py file untuk memastikan bahwa Anda mendapatkan interpreter yang Anda inginkan? - Kyle Strand


Garis yang telah Anda indikasikan digunakan untuk memberi tahu komputer program / juru bahasa apa yang digunakan ketika menjalankan file / skrip secara langsung, dan argumen apa pun yang harus diteruskan ke program itu ketika skrip berjalan. Ini bukan, bagaimanapun, persyaratan Python, ini adalah persyaratan dari kernel / sistem linux jika Anda ingin menjalankan skrip secara langsung (dan tidak meneruskannya ke Python dengan sintaks di bawah).

Itu tidak diperlukan jika Anda akan mengeksekusi python script.py atau serupa. Ini hanya diperlukan jika Anda ingin menjalankan skrip / file secara langsung, tanpa juga menyediakan interpreter untuk digunakan (seperti python).


Untuk skrip Bash, itu akan memiliki sesuatu seperti ini:

#!/bin/bash [optional Bash arguments]
# Bash script code here
...
exit 0;

Ini akan menunjukkan kepada sistem bahwa, ketika ini berjalan, itu harus dijalankan melalui /bin/bash yang merupakan salah satu bahasa shell / shell-script pada sistem.


Untuk kode Python, meskipun, di sini, Anda akan ingin memiliki file eksekusi dijalankan melalui Python, sehingga Anda memberi tahu apa interpreter yang ingin Anda jalankan di dalamnya.

#!/usr/bin/python [optional Python arguments]
# Python code here
...
exit()

Ini, seperti untuk Bash, menunjukkan itu /usr/bin/python harus digunakan (ini kemungkinan Python 2 atau Python 3, tergantung pada konfigurasi sistem individual Anda).


Dengan cara ini, Anda bisa berlari ./filename.py atau ./executable atau ./scripttorunlangsung.

Tanpa baris tersebut di awal, dan dengan asumsi Anda telah mengatur file / skrip agar dapat dieksekusi, dan dengan asumsi Anda bekerja dengan skrip Python, Anda harus menjalankan python filename.py atau serupa jika Anda tidak memiliki #!/usr/bin/python garis. (Untuk skrip Bash, Anda harus melakukannya bash script.sh, atau serupa untuk skrip / bahasa lain, seperti Perl, Ruby, dll.)

Penyorotan sintaks di atas adalah bahasa khusus di setiap bagian, meskipun itu tidak terlalu penting.


41
2017-11-04 21:53



Hal yang menarik untuk ditambahkan adalah bahwa mungkin untuk menentukan parameter tambahan setelah shebang itu sendiri, di sebagian besar kasus dengan cara yang sama seolah-olah penerjemah dipanggil secara langsung (#!/bin/bash -x, #!/usr/bin/perl -lan, dll). - kos
@kos: Saya pikir Anda dapat menentukan satu argumen ekstra, yang telah menjadi PITA ketika satu (seharusnya) digunakan /usr/bin/env python untuk mendapatkan python yang benar. - progo
@progo Tidak yakin apa masalahnya env adalah, tetapi masalahnya tampaknya tidak menjadi jumlah argumen: #!/usr/bin/perl -l -a -n memiliki tiga argumen tetapi berhasil. Meski lagi, saya tidak bisa mengatasi masalah yang sebenarnya. - kos
Ketika secara eksplisit memanggil seorang penerjemah dengan skrip sebagai argumen, tidak ada alasan untuk memulai dengan yang terakhir ./. Dengan kata lain saja python filename.py atau bash script.sh akan berfungsi dengan baik. Satu-satunya alasan untuk disertakan ./ dalam nama perintah, ketika Anda ingin memberi tahu shell untuk tidak mencari $PATH (yang mungkin tidak akan menemukan file dalam direktori saat ini) tetapi mengambil jalur yang Anda tentukan apa adanya. Tapi itu tidak berlaku untuk argumen perintah. - Marc van Leeuwen
@kos: Masalahnya bisa bagaimana caranya env menerima sisa argumen dari kernel. Mereka semua bisa dianggap sebagai satu argumen besar tanpa pembelahan-oleh-ruang dilakukan. Maaf untuk artikulasi, saya tidak ingat detail ini dengan baik lagi - progo


Garis:

#!/usr/bin/python

disebut 'shebang' dan ini menunjukkan jalur ke biner interpreter yang akan digunakan untuk menafsirkan sisa perintah dalam file. Ini biasanya baris pertama naskah.

Jadi garisnya #!/usr/bin/python menunjukkan bahwa isi file akan ditafsirkan oleh python biner yang terletak di /usr/bin/python.

Perhatikan bahwa garis shebang diurai oleh kernel dan kemudian skrip akhirnya akan dipanggil sebagai argumen:

python script_name

Demikian pula dalam kasus #!/bin/bash:

bash script_name

16
2017-11-04 21:57



Saya tidak berpikir saya pernah melihat tanda hubung shebang. Karena kata itu terbentuk dari "hash" dan "bang," ejaan Anda tidak begitu jelas, karena sepertinya itu adalah kombinasi dari "dia" dan "bang". - Kyle Strand
Anda bisa menyebutnya hashbang (# = "hash") atau shebang (# = "tajam"), tergantung bagaimana Anda memberi nama # karakter. Namun, shebang memang lebih umum. @KyleStrand - Byte Commander


Secara teknis, itu tidak membutuhkannya. Ini membutuhkan jalur ke lingkungan tempat skrip Anda dijalankan. Skrip masa depan Anda akan lebih baik untuk menyertakan / usr / bin / env kemudian, tentukan python. Hibah ini bahwa skrip Anda berjalan di lingkungan python di mana pun python dipasang. Anda ingin melakukan ini untuk alasan kompatibilitas, Anda tidak dapat memastikan orang berikutnya yang Anda bagikan kode Anda akan menginstal python di usr / bin / python, atau bahwa mereka akan memiliki izin ke file sistem tersebut.

Berikut ini adalah Q & A serupa dari tumpukan overflow.

Apa yang terlihat seperti di skrip Anda adalah:

#!/usr/bin/env python

Saya juga melihat beberapa kekhawatiran tentang bagaimana menentukan python3. Berikut cara melakukannya:

#!/usr/bin/env python3

7
2017-11-05 16:50





Di Linux, Python mungkin atau mungkin tidak membutuhkan #! (shebang) garis. Ini tergantung pada bagaimana kode Python ditangani, baik menjalankan kode dalam mode interaktif Python atau dalam skrip Python.

Mode interaktif Python memungkinkan pengguna untuk mengetik dan menjalankan kode Python secara langsung, yang tidak memerlukan garis shebang. Untuk menjalankan mode interaktif, buka Terminal dan ketik python untuk Python 2.X atau python3 untuk Python 3.X.

$  python
Python 2.7.6 (default, Jun 22 2015, 18:00:18) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 

$  python3
Python 3.4.3 (default, Oct 14 2015, 20:33:09) 
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

Skrip Python memungkinkan pengguna untuk menulis dan menyimpan kode Python dalam file teks biasa, kemudian jalankan kode-kode nanti. Ini mungkin atau mungkin tidak membutuhkan garis shebang. Namun, ada dua alasan yang diketahui ketika garis shebang diperlukan untuk menggunakan skrip Python di Linux.

  1. untuk menjalankan kode Python dalam skrip yang dapat dijalankan yaitu mendefinisikan bagaimana kode harus dijalankan dan menggunakan interpreter apa;

  2. untuk menjalankan kode Python sehubungan dengan versi tertentu dari Python yaitu menjalankan kode yang kompatibel dengan Python 2.X atau Python 3.X saja

Berlatih dengan skrip Python

Di bawah ini adalah daftar dan konten file, yang saya gunakan untuk menunjukkan kasus itu #! (shebang) line diperlukan atau tidak diperlukan.

$  ls -ln *.py
-rw-rw-r-- 1 1000 1000  94 Dec 14 18:37 hello1.py
-rwxrwxr-x 1 1000 1000 116 Dec 14 18:37 hello2e.py
-rw-rw-r-- 1 1000 1000 116 Dec 14 18:37 hello2.py
-rwxrwxr-x 1 1000 1000 117 Dec 14 18:37 hello3e.py
-rwxrwxr-x 1 1000 1000 120 Dec 14 18:37 hello3m.py
-rw-rw-r-- 1 1000 1000 117 Dec 14 18:37 hello3.py

$  file *.py
hello1.py:  ASCII text
hello2e.py: Python script, ASCII text executable
hello2.py:  Python script, ASCII text executable
hello3e.py: Python script, ASCII text executable
hello3m.py: Python script, UTF-8 Unicode (with BOM) text executable
hello3.py:  Python script, ASCII text executable
  • hello1.py hanya berisi kode sumber.

    import sys
    sys.stdout.write("Hello from Python %s\n" % (sys.version,))
    print("Hello, World!")
    
  • hello2.py berisi kode sumber dan garis shebang.

    #!/usr/bin/env python
    import sys
    sys.stdout.write("Hello from Python %s\n" % (sys.version,))
    print("Hello, World!")
    
  • hello2e.py mengandung sama dengan hello2.py dan dibuat dapat dieksekusi.

  • hello3.py mengandung sama dengan hello2.py, kecuali disesuaikan untuk dijalankan dengan Python 3 dengan mengganti nama baris pertama menjadi #!/usr/bin/env python3.

  • hello3e.py mengandung sama dengan hello3.py dan dibuat dapat dieksekusi.

  • hello3m.py mengandung sama dengan hello3.pydan dibuat dapat dieksekusi, kecuali disimpan dengan Write Unicode BOM pilihan dalam editor teks yaitu Mousepad.

Di luar titik ini, pengguna akan disajikan dengan dua metode untuk menjalankan skrip Python. Kedua metode tersebut telah ditunjukkan seperti di bawah ini.

Metode 1: Jalankan dengan program Python

Di bawah ini adalah perintah dan keluaran saat menjalankan kode sumber dengan Python 2 dan Python 3.

$  python hello1.py
Hello from Python 2.7.6 (default, Jun 22 2015, 18:00:18) 
[GCC 4.8.2]
Hello, World!

$  python3 hello1.py
Hello from Python 3.4.3 (default, Oct 14 2015, 20:33:09) 
[GCC 4.8.4]
Hello, World!

Kedua versi Python mampu menjalankan skrip dengan sukses. Oleh karena itu, garis shebang adalah tidak diperlukan saat menjalankan skrip Python melalui python atau python3 perintah.

Metode 2: Jalankan sebagai skrip Python

Di bawah ini adalah perintah dan keluaran saat menjalankan kode sumber dengan garis shebang, yang tidak disesuaikan, Python 2 dan Python 3, termasuk kasus yang tidak dapat dieksekusi dan dieksekusi.

$  ./hello1.py
bash: ./hello1.py: Permission denied

$  ./hello2.py
bash: ./hello2.py: Permission denied

$  ./hello3.py
bash: ./hello3.py: Permission denied

$  ./hello2e.py 
Hello from Python 2.7.6 (default, Jun 22 2015, 18:00:18) 
[GCC 4.8.2]
Hello, World!

$  ./hello3e.py 
Hello from Python 3.4.3 (default, Oct 14 2015, 20:33:09) 
[GCC 4.8.4]
Hello, World!

Tiga skrip pertama gagal karena skrip ini tidak dapat dieksekusi, terlepas dari memiliki garis shebang atau tidak (Untuk bukti pendukung, lihat Contoh tambahan di bawah). Dua skrip terakhir memiliki garis shebang dan dapat dieksekusi.

Rupanya, skrip yang telah dibuat dapat dieksekusi pada dasarnya tidak berguna tanpa garis shebang. Oleh karena itu, garis shebang diperlukan dan skrip harus dapat dieksekusi ketika menjalankan kode Python dalam skrip yang dapat dieksekusi.

Ketika shebang tidak berfungsi

Dalam contoh saya siap dan diuji, berlari hello3m.py sebagai skrip yang dapat dijalankan telah gagal dan mengembalikan kesalahan.

$  ./hello3m.py 
./hello3m.py: line 1: #!/usr/bin/env: No such file or directory

Ini adalah sebuah batasan yang diketahui shebang itu tidak berfungsi atau menjadi tidak valid. Ketika sebuah file disimpan sebagai Unicode BOM (Byte Order Mark), file tersebut akan gagal dijalankan secara normal sebagai skrip Python yang dapat dieksekusi.

Contoh tambahan

Contoh tambahan ini harus diperlakukan sebagai bukti pendukung saja. Pengguna harus menghindari menjalankan contoh ini, meskipun hasilnya tidak berbahaya.

Saya telah membuat file lain bernama hello1e.py, yang mengandung sama dengan hello1.py dan dibuat dapat dieksekusi. Menjalankan skrip ini mengembalikan kesalahan sintaks.

$  ./hello1e.py 
./hello1e.py: line 2: syntax error near unexpected token `"Hello from Python %s\n"'
./hello1e.py: line 2: `sys.stdout.write("Hello from Python %s\n" % (sys.version,))'

Saat menjalankan skrip ini, pada awalnya, kursor mouse akan diubah menjadi tanda tambah dan tidak menampilkan apa pun. Kesalahan sintaksis tidak akan ditampilkan sampai saya membuat klik pada jendela Desktop atau Terminal. Kemudian, skrip ini akan membuat sys file di direktori yang sama dengan skrip.

$  file sys
sys: PostScript document text conforming DSC level 3.0, Level 1

Itu sys file telah diidentifikasi sebagai file PostScript, tanpa ekstensi file. File ini dapat dibuka di document viewer yaitu Evince, dan file tersebut sebenarnya berisi screenshot dari jendela yang telah saya klik sebelumnya. Menurut pengalaman saya, file bisa sebesar beberapa Megabyte.

Sekali lagi, garis shebang diperlukan dan skrip harus dapat dieksekusi ketika menjalankan skrip Python sebagai skrip yang dapat dieksekusi. Jika tidak, skrip akan berperilaku tidak baik seperti yang dijelaskan di atas.

Catatan tambahan

Istilah "dieksekusi" atau "harus dapat dijalankan" mengacu pada izin untuk menjalankan skrip. Ini dilakukan dengan berlari chmod +x FILENAME perintah di Terminal, atau dengan mencentang opsi "Izinkan file ini berjalan sebagai program" atau sesuatu yang serupa di Properties jendela, dalam file manager.

Sementara jawaban yang ada lainnya telah mencakup hampir segalanya, jawaban ini telah mengambil pendekatan yang berbeda dengan menggunakan contoh-contoh praktis untuk menjelaskan masalah ini. Sintaks kode telah ditulis dengan hati-hati, sehingga contoh-contohnya dapat dijalankan dengan Python 2 atau Python 3, sebagaimana adanya.

Kode Python telah diadaptasi dari Menggunakan Python di Windows dan Menggunakan Python pada platform Unix, dengan tambahan kode satu baris dari "Hello, World!" yang ada di mana-mana. program.

Semua kode dan perintah telah sepenuhnya diuji dan berfungsi di sistem Xubuntu 14.04, yang telah menginstal Python 2.7 dan Python 3.4 secara default.


5
2017-12-14 18:19





Ini berarti bahwa ketika file tersebut dijalankan komputer Anda tahu untuk mengeksekusinya dengan program /usr/bin/python, begitulah cara membedakannya dari bahasa lain, seperti bash di mana Anda akan melakukannya #!/bin/bash. Ini agar Anda dapat menjalankan:

./[file-to-execute]

Dan ia akan tahu file mana yang akan dieksekusi, daripada Anda sendiri harus menentukan dengan sesuatu seperti:

python ./[file-to-execute].py

Itu #! bagian umumnya dirujuk sebagai sebuah peristiwa atau a bang krisis.


4
2017-11-04 21:53



Juga hashbang. - Naftuli Kay


Jika Anda memiliki beberapa versi Python yang diinstal, /usr/bin/env akan memastikan interpreter yang digunakan adalah yang pertama di lingkungan Anda $PATH. Alternatifnya adalah dengan hardcode sesuatu seperti #!/usr/bin/python;

Di Unix, file yang dapat dieksekusi yang dimaksudkan untuk ditafsirkan dapat menunjukkan interpreter apa yang digunakan dengan memiliki #! pada awal baris pertama, diikuti oleh penerjemah (dan bendera apa pun yang diperlukan).

Aturan ini hanya berlaku untuk sistem berbasis UNIX.


1
2017-12-19 13:34