Jika saya ingin skrip saya menggunakan bash shell, apakah menggunakan ekstensi .bash sebenarnya memanggil bash atau apakah itu tergantung pada konfigurasi sistem / baris shebang pertama. Jika keduanya berlaku tetapi berbeda, mana yang akan didahulukan?
Saya tidak yakin apakah akan mengakhiri skrip saya dengan .sh hanya untuk menunjukkan "skrip shell" dan kemudian memiliki baris pertama pilih bash shell (misalnya #!/usr/bin/env bash
) atau apakah hanya akan mengakhirinya dengan .bash (serta pengaturan baris 1) ). Saya ingin bash dipanggil.
.bash
ekstensi. Selain itu, kebijakan Debian untuk membuat skrip dalam paket yang masuk ke salah satubin
folder tidak memiliki ekstensi.Jawaban:
Jika Anda tidak menggunakan penerjemah secara eksplisit, maka penerjemah yang dipanggil ditentukan oleh yang
shebang
digunakan dalam skrip. Jika Anda menggunakan juru bahasa secara khusus maka juru bahasa tersebut tidak peduli ekstensi apa yang Anda berikan untuk naskah Anda. Namun, ada ekstensi untuk membuatnya sangat jelas bagi orang lain jenis skrip itu.Lihat,
.py
ekstensi ke skrip bash tidak menjadikannya skrip python.Itu selalu sebuah
bash
naskah.sumber
Penamaan skrip tidak ada hubungannya dengan bagaimana skrip dijalankan.
Baris shebang mendefinisikan interpreter apa yang digunakan untuk menjalankan skrip.
Saya pribadi tidak peduli jika sebuah skrip adalah sh, bash, perl, apa pun jadi saya sebut saja untuk apa fungsinya; Saya menemukan menambahkan ekstensi yang berlebihan. Saya akan lakukan
file scriptname
untuk mengetahui file apa itu jika saya ingin tahu itu.Jadi, jika Anda ingin skrip Anda dijalankan
bash
, gunakan#!/bin/bash
sebagai baris pertama.sumber
.sh
ekstensi gaya berarti tidak perlu mengubah nama itu. (Diakui tidak ada yang mencegah program C menghasilkan biner dengan.sh
ekstensi, itu hanya akan membingungkan.)#!/usr/bin/env bash
untuk portabilitas, dibahas di sini stackoverflow.com/a/10383546/54964