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:
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), usea+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.
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. Elbash
el 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
ochmod a+x
.
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.