Saya bertanya-tanya apakah ada konvensi untuk ekstensi jenis file untuk skrip shell yang ingin Anda sumber alih-alih dijalankan. Sebagai contoh:
Jika saya ingin menjalankan skrip ini dalam subkulit.
./script.sh
Jika saya ingin ingat untuk menjalankan skrip ini dari shell saat ini.
. script.source
Apakah ada konvensi (seperti POSIX misalnya) untuk tipe file dalam contoh kedua? Sesuatu seperti .source
atau .sourceme
?
Memperbarui
Pertanyaan ini tidak menanyakan pendapat apa pun. Saya dengan jelas menyatakan bahwa saya ingin tahu apakah ada ekstensi file standar untuk skrip semacam ini. Pertanyaan ini bahkan lebih tidak berdasar pendapat daripada pertanyaan yang diterima dengan baik pada masalah yang sama ( Gunakan ekstensi .sh atau .bash untuk skrip bash? ).
shell-script
shell
standard
conventions
Mateusz Piotrowski
sumber
sumber
#!/bin/sh
atau serupa tidak boleh memiliki ekstensi, karena pengguna tidak perlu peduli tentang bahasa apa yang dituliskan skrip yang mendasarinya.$PATH
, Anda datang menggunakan semua waktu, jadi nya seperti,ps
,ls
,curl
dan semua perintah lainnya, maka Anda mulai fungsi selesai membangun shell di sekitarnya, saya menemukan tidak apa-apa untuk menjatuhkan ekstensi. Tapi ya, ketika Anda mencari skrip shell, yang tidak dapat dieksekusi sendiri, saya tidak akan melakukannyachmod +x
, dan saya akan menamainyascript.sh
. juga saya sering menetapkan ekstensi murni karena jika tidak saya tidak akan mendapatkan sorotan sintaks pada editor saya.Jawaban:
Saya akan menggunakan
.sh
(untuk file dalamsh
bahasa POSIX ,.bash
untukbash
file yang tidak kompatibel dengan sh , yang merupakan ekstensi mengidentifikasi bahasa tempat script ditulis) untuk file yang dimaksudkan untuk diambil (atau lebih umum tidak dimaksudkan untuk dieksekusi), dan tidak ada ekstensi untuk file yang dimaksudkan untuk dieksekusi.Anda juga dapat menambahkan:
she-bang, sehingga ketika dieksekusi secara tidak sengaja (meskipun saya berharap file-file itu tidak boleh diberikan izin eksekusi, yang sudah akan mencegah eksekusi), Anda mendapatkan pemberitahuan bahwa itu harus bersumber sebagai gantinya.
sumber
Dalam hal file sumber, saya pikir cara terbaik adalah .conf untuk file yang mengkonfigurasi skrip Anda dan .shlib atau .shlibs untuk file yang memiliki fungsi atau utilitas lain.
Jika Anda ingin mencegah skrip Anda berjalan dengan shell yang salah, dan hashbang tidak cukup untuk Anda, Anda dapat menggunakan ini:
sumber
/proc/$$/exe
, Anda mungkin juga melakukannya sebagaicase $(readlink "/proc/$$/exe") in */bash)...
, meskipun di sini, saya akan hanya menggunakan:if [ -z "$BASH_VERSION" ]
. (echo
seharusnyaecho >&2
). (Saya suka Anda.conf
atau.shlibs
(tetapi untuk file sh) ekstensi meskipun itu mungkin tidak membantu sintaksis yang bergantung pada ekstensi).