Cerrado . Esta pregunta está
basada en opiniones . Actualmente no acepta respuestas.
Comentarios
Responder
Solo llamaría .sh
algo que está destinado a ser portátil (y con suerte es portátil).
De lo contrario, creo que es mejor ocultar el idioma. El lector atento encuéntrelo en la línea shebang de todos modos. (En la práctica, los sufijos .bash
o .zsh
, etc. rara vez se utilizan).
Comentarios
Respuesta
Yo diría que no existen «buenas prácticas» para las extensiones de archivo, estrictamente por un tecnicismo: Unix / Linux / * Los sistemas de archivos BSD no » soporta extensiones per se. Lo que usted llama una extensión es simplemente un sufijo de un solo nombre de archivo. Eso es diferente a los sistemas de archivos VM / CMS, VMS, MS-DOS y Windows y los sistemas operativos donde hay un lugar especial en el inode- moral-equivalente está reservado para una extensión.
Esa pequeña perorata ahora terminada, creo que es un poco tonto poner un sufijo «.sh» o «.ksh» o «.bash» en un shell nombre de archivo de script. Un programa es un programa: no existe ningún beneficio en distinguir lo que se ejecuta. Ningún unix o linux o cualquier kernel ha decidido llamar a un intérprete en algún archivo simplemente por un sufijo de nombre de archivo. Todo lo hace el #!
línea, o alguna otra secuencia de bytes de «número mágico» en el comienzo del archivo. De hecho, decidir qué ejecutar en función de una «extensión» de nombre de archivo es uno de los factores que convierte a Windows en un imán de malware. Mire cuántas estafas de malware de Windows involucran un archivo llamado «something.jpg.exe»: de forma predeterminada, las versiones más recientes de Windows no muestran la extensión «.exe» y aliente al usuario a hacer doble clic en la «imagen». En lugar de una vista de imagen ejecutándose, el malware se ejecuta.
Lo que podría considerar como un comando directo es a menudo un script de shell de todos modos. A veces cc
ha sido un sh-script, firefox
es un sh-script, startx
es un sh-script. No creo que exista un script cognitivo o beneficio organizacional de marcar un script con un sufijo «.sh».
Comentarios
Respuesta
Como alguien que ha trabajado en una multitud de entornos? nix, he tenido que escribir en una amplia variedad de conchas. Lo crea o no, en todas las plataformas, los caparazones no son los mismos. Entonces, si mantiene su biblioteca personal en múltiples shells (cuando sea necesario), es muy útil usar extensiones para identificar los shells. De esa manera, cuando se muda a otra plataforma y el shell es ligeramente diferente, sabrá qué scripts apuntar para modificaciones. .sh .ksh .bsh .csh …
Comentarios
Respuesta
No debe utilizar una extensión para los ejecutables, ya que no son intercambiables. Imagina que tienes un script de shell a.sh
, luego vuelve a escribir en python a.py
, ahora tienes que cambiar todos los programas que llaman a tu script , ha filtrado detalles de implementación.
Todo el asunto de la extensión del nombre de archivo en Windows de Mircosoft es un desastre: por ejemplo, lo que podría haber sido a.audio, b.audio, c.audio
, es a.mp3, b.wav, c.ogg
, y d.picture, e.picture, f.picture
es d.jpeg, e.png, f.gif
. La mayoría de las veces no nos importa el formato el audio o la imagen está en. También tenemos que dedicar mucho tiempo a enseñar a los nuevos usuarios todas las extensiones de archivo.
Comentarios
Respuesta
Como dijiste, las extensiones de archivo de Unix son puramente información. Solo necesita que su script tenga un shebang correcto y sea ejecutable.
Puede no tener extensión o usar .sh
.
I utilice personalmente las siguientes convenciones, independientemente del shell utilizado (csh, tcsh, bash, sh, …):
- sin extensión para el sistema o scripts de alto grado (extremadamente raro).
-
.sh
para scripts clásicos, de grado bajo a alto.
Comentarios
Respuesta
Las extensiones de script de shell son bastante útiles. Por ejemplo, a menudo escribo scripts que tienen varios archivos en varios idiomas (p. Ej.bash, awk y lua) en el mismo directorio. Si necesito buscar una cadena solo en los archivos bash, la extensión lo hace muy útil para reducir los falsos positivos. O si quiero hacer un recuento de líneas de todo mi código bash para ese proyecto.
Es una molestia tener que escribir la extensión cuando se ejecuta el programa, así que también hago un enlace simbólico sin la extensión para el ejecutable principal, para editarlo / ejecutarlo sin necesidad de escribir la extensión cada vez. Los enlaces simbólicos son baratos y fáciles.
Comentarios
Responder
Como han dicho otros, al shell no le importan las extensiones. Sin embargo, permite una rápida identificación humana de archivos. Veo archivos que terminan en .py
o .sh
y rápidamente sé cuáles (al menos) deberían ser. Como dice Steve, buscar por extensión de archivo o hacer un recuento de líneas también son consideraciones prácticas.