Cómo hacer que un archivo (por ejemplo, un script .sh) sea ejecutable, para que pueda ejecutarse desde una terminal

Tengo un script.sh el archivo y el tipo de este archivo es shellscript file. Quiero hacer este archivo como application / x-executable file. ¿Cómo lo puedo hacer?

Puede marcar el archivo como ejecutable:

chmod +x filename.sh

A continuación, puede ejecutarlo de esta manera:

./filename.sh

Si desea utilizar un comando diferente para iniciarlo, puede agregar un alias:

gedit ~/.bashrc

Agregue esto al final del archivo:

alias <new name>='/home/<full path to script>/filename.sh'

Abrir una nueva sesión o tipo de terminal source ~/.bashrc en su terminal para aplicar.Luego, simplemente use el nuevo nombre para iniciar el script.

Hay dos formas de hacer que un archivo sea ejecutable:

Método GUI:

Haga clic con el botón derecho en el archivo y seleccione Propiedades.Vaya a la pestaña Permisos y, a continuación, marque la casilla Execute: [ ] Allow executing file as program o en Nautilus Program: [ ] Allow this file to run as a program en Thunar.

Método de terminal / Comando:

Puedes usar:

cd /to/my/required/directory

Luego corre

chmod +x filename.extension

O simplemente corre:

chmod +x /path/to/your/filename.extension

chmod también tiene algunas opciones más avanzadas:

Los espacios son para mostrar que está dividido: - rwx --- ---

El primer conjunto de --- es usuario. El segundo es Grupo y el último es Otro (cualquier otro)

r significa Lectura, w significa Escritura y x significa Ejecución.

Por lo tanto, permitir que todos lo lean, pero solo el Grupo lo ejecute y el Usuario lo lea y escriba (pero por alguna razón no lo ejecute) sería:

-rw- rx- r-- Pero esto se agregaría al comando como:

chmod +rw-rx-r-- /path/to/file.extension

chmod también puede hacer esto en números. Se basa en binario (creo, ya que es 1,2 y 4)

Así que hay estos números:

Ejecutar por usuario es 100.Ejecutar por grupo es 010.Ejecutar por otro is 001.

Escribir por usuario es 200.Escribir por grupo es 020.Escribir por otro is 002.

Leído por el usuario es 400.Leer por grupo es 040.Leído por otros IS 004.

Luego, sume estos para obtener la combinación deseada.

Por lo tanto, permitir que todos lo lean, pero solo el Grupo lo ejecute y el Usuario lo escriba (pero por alguna razón no se ejecute) sería:

400 + 040 + 004 y 010 y 200

Eso se suma a 600 + 050 + 004 = 654.

A continuación, puede ejecutar el comando.

chmod +654 /path/to/file.extension para configurarlo.

Y para establecer todos los permisos, puede escribir:

chmod +rwxrwxrwx /path/to/file.extension

O (esto es un poco más fácil de escribir, pero más difícil de recordar cada uno):

chmod +777 /path/to/file.extension

Finalmente, puedes hacer:

chmod -777 /path/to/file.extension

Quitar todos los permisos a todos.

Y:

chmod +300 /path/to/file.extension

Para agregar lectura y escritura para el usuario, sin afectar ningún otro permiso (por ejemplo, permisos de ejecución).

Este sitio web tiene una pequeña casilla de verificación de cuadrícula muy útil, mediante la cual puede marcar las opciones que desee y le da el comando:

enter image description here

Sin embargo, no todas las combinaciones posibles son sensatas de usar; las principales que se utilizan son las siguientes:

755 - Owner lo tiene todo, y Group y Other puede leer y ejecutar

700 - Owner tiene todo

644 - Owner puede leer y escribir, y Group y Other puede leer

600 - Owner puede leer y escribir

Y, si está utilizando grupos de usuarios no triviales:

775 - Owner puede leer y escribir, y Group y Other puede leer

770 - Owner y Group tener todo, y Other puede leer y ejecutar

750 - Owner lo tiene todo, y Group puede leer y ejecutar

664 - Owner y Group puede leer y escribir, y Other puede leer

660 - Owner y Group puede leer y escribir

640 - Owner puede leer y escribir, y Group puede leer

777 y 666 se usan raramente, excepto en /tmp.

Gracias Ilmari Karonen para señalando los de uso común!

Ejecutar:

chmod +x /path/to/file.sh

Para que no sea ejecutable, ejecute:

chmod -x /path/to/file.sh

Por ejemplo, creé .sh file:

vi tester12.sh

Después de escribir un código en el editor vi, saldré del editor vi:

:wq!chmod +x tester12.sh./tester12.sh

Permita que todos los usuarios ejecuten su script

Como se indicó, puede establecer el bit de ejecución del archivo para que sea ejecutable con chmod +x. Pero también puedes usar chmod a+x:

$ ll file_command.txt-rw-rw-r-- 1 rick rick 17 Sep 19 08:55 file_command.txt$ chmod a+x file_command.txt$ ll file_command.txt-rwxrwxr-x 1 rick rick 17 Sep 19 08:55 file_command.txt*

NOTA:

  • Un guión no tiene que terminar con .sh puede terminar en .txt como se muestra aquí, o no tienen extensión alguna.
  • En lugar de solo +x (solo usted puede ejecutar el script), use a+x para que todos los usuarios puedan ejecutar el script.
  • El nombre de archivo tiene una * se adjunta para indicar que es ejecutable. Además, el nombre del archivo cambia de color a verde en la mayoría de los sistemas.

make script executable


Ejecutar un script sin que sea ejecutable

Aún puede ejecutar un script bash sin que sea ejecutable. Por ejemplo:

$ echo "echo Hello World" > file_command.txt$ cat file_command.txtecho Hello World$ bash file_command.txtHello World

NOTA:

  • Primero creamos un script que contiene echo Hello World.
  • Luego confirmamos el script llamado file_command.txt es correcto.
  • Por último, ejecutamos el script llamando bash y pasándole el nombre del script. El bashel comando en realidad se almacena como /bin/bash y es un ejecutable en todos los sistemas Ubuntu.
  • La creación de un archivo de comandos evita agregar el shebang #!/bin/bash como la primera línea de un script.
  • La creación de un archivo de comandos evita que sea ejecutable con chmod +x o chmod a+x.

relacionado con ¿Cómo ejecuto archivos .sh en la Terminal?

Posible duplicado de ¿Cómo ejecuto archivos .sh?

No es un duplicado, porque he preguntado específicamente sobre cómo hacerlo application / x-executable. La otra pregunta solo pregunta por abrir el archivo sh en la terminal.