programas - scripts bash ejemplos
Bash Script: ¿qué significa#!/Bin/bash? (3)
Esta pregunta ya tiene una respuesta aquí:
En script bash, ¿qué significa #!/bin/bash
en la primera línea?
ACTUALIZACIÓN : ¿Hay alguna diferencia entre #!/bin/bash
y #!/bin/sh
?
Cuando los primeros personajes en un script son #!
, eso se llama shebang Si su archivo comienza con #!/path/to/something
el estándar es ejecutar something
y pasar el resto del archivo a ese programa como entrada.
Dicho esto, la diferencia entre #!/bin/bash
, #!/bin/sh
, o incluso #!/bin/zsh
es si los programas bash, sh, o zsh se utilizan para interpretar el resto del archivo. bash
y sh
son solo programas diferentes, tradicionalmente. En algunos sistemas Linux, son dos copias del mismo programa. En otros sistemas Linux, sh
es un enlace para dash
, y en los sistemas Unix tradicionales (Solaris, Irix, etc.) bash
suele ser un programa completamente diferente de sh
.
Por supuesto, el resto de la línea no tiene que terminar en sh. Podría ser #!/usr/bin/python
, #!/usr/bin/perl
, o incluso #!/usr/local/bin/my_own_scripting_language
.
Eso se llama shebang , le dice al shell con qué programa interpretar el script, cuando se ejecuta.
En su ejemplo, el script debe ser interpretado y ejecutado por el shell bash .
Algunos otros shebangs de ejemplo son:
(De Wikipedia)
#!/bin/sh — Execute the file using sh, the Bourne shell, or a compatible shell
#!/bin/csh — Execute the file using csh, the C shell, or a compatible shell
#!/usr/bin/perl -T — Execute using Perl with the option for taint checks
#!/usr/bin/php — Execute the file using the PHP command line interpreter
#!/usr/bin/python -O — Execute using Python with optimizations to code
#!/usr/bin/ruby — Execute using Ruby
y algunos más que puedo pensar en la parte superior de mi cabeza, como:
#!/bin/ksh
#!/bin/awk
#!/bin/expect
En un script con bash shebang, por ejemplo, escribirías tu código con sintaxis bash; mientras que en un script con expect shebang, lo codificaría en la sintaxis de esperar, y así sucesivamente.
Respuesta a la porción actualizada:
Depende de a qué /bin/sh
realmente apunta en su sistema. A menudo es solo un enlace simbólico a /bin/bash
. A veces, los scripts portátiles se escriben con #!/bin/sh
solo para indicar que es un script de shell, pero usa el shell al que se refiere /bin/sh
en ese sistema en particular (tal vez apunta a /bin/bash
, /bin/ksh
o /bin/zsh
)
En script bash, ¿qué significa #! / Bin / bash en la primera línea?
En el sistema Linux, tenemos shell que interpreta nuestros comandos UNIX. Ahora hay una cantidad de shell en el sistema Unix. Entre ellos, hay un shell llamado bash que es Linux muy común y tiene una larga historia. Este es un shell por defecto en Linux.
Cuando escribe una secuencia de comandos (colección de comandos de Unix, etc.) tiene la opción de especificar qué caparazón se puede usar. En general, puede especificar qué caparazón será utilizando Shebang (sí, así es su nombre).
Entonces, si #! / Bin / bash está en la parte superior de sus scripts, le está diciendo a su sistema que use bash como shell predeterminado.
Ahora vamos a tu segunda pregunta: ¿Hay alguna diferencia entre #! / Bin / bash y #! / Bin / sh?
La respuesta es sí. Cuando le dice a #! / Bin / bash, le está diciendo a su entorno / os que use bash como intérprete de comandos. Esto es algo codificado.
Cada sistema tiene su propio caparazón que el sistema usará para ejecutar sus propios scripts del sistema. Este shell del sistema puede variar de OS a OS (la mayoría de las veces será bash. Ubuntu recientemente usó Shebang como shell del sistema por defecto). Cuando especifique #! / Bin / sh, el sistema usará su caparazón interno del sistema para interpretar sus scripts de shell.
Visite este link para obtener más información donde he explicado este tema.
Espero que esto elimine tus confusiones ... buena suerte.