Tengo un archivo script.sh y el tipo de este archivo es shellscript. Quiero hacer este archivo como archivo de aplicación / x-ejecutable. ¿Cómo puedo hacerlo?
Tengo un archivo script.sh y el tipo de este archivo es shellscript. Quiero hacer este archivo como archivo de aplicación / x-ejecutable. ¿Cómo puedo hacerlo?
Respuestas:
Puede marcar el archivo como ejecutable:
chmod +x filename.sh
Luego puede ejecutarlo así:
./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'
Abra una nueva sesión de terminal o escriba source ~/.bashrcsu terminal para aplicar. Luego, simplemente use el nuevo nombre para iniciar el script.
./filename.shy no solo filename.sh?
filenamey no./filename
./filename.shespecifica un archivo en el directorio actual y el uso filename.shespecifica un archivo en el directorio actual o en cualquier directorio de PATH. El primer uso elimina cualquier incertidumbre sobre a qué archivo se accede. En este caso, está intentando ejecutar el script con bash u otro intérprete (en virtud de asumir #!/bin/bashcomo primera línea en su script) simplemente ingresando el nombre del archivo. Este uso requiere que se especifique el directorio. Alternativamente, puede probar bash filename.shcuál parece funcionar con un directorio no especificado.
Hay dos formas de hacer que un archivo sea ejecutable:
Método GUI:
Vaya a la pestaña de permisos, luego marque la casilla `Ejecutar: [] Permitir ejecutar el archivo como programa.

Método de terminal / comando:
Puedes usar:
cd /to/my/required/directory
Entonces corre
chmod +x filename.extension
O simplemente ejecuta:
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 otra persona)
r significa lectura, w para escritura yx para eXecute.
Entonces, para permitir que todos lo lean, pero solo el Grupo para ejecutarlo y el Usuario para leerlo y escribirlo (pero por alguna razón no ejecutarlo) sería:
-rw- rx- r-- Pero esto se agregaría al comando como:
chmod +rw-rx-r-- /path/to/file.extension
chmodTambién puede hacer esto en números. Está basado en binario (creo que es 1,2 y 4)
Entonces hay estos números:
Ejecutar por usuario es 100. Ejecutar por grupo es 010. Ejecutar por otro es 001
Escribir por usuario es 200. Escribir por grupo es 020. Escribir por otro es 002.
Leído por el usuario es 400. Leer por grupo es 040. Leer por otro es 004.
Luego los sumas para obtener la combinación deseada.
Entonces, para permitir que todos lo lean, pero solo Group para ejecutarlo y User para escribirlo (pero por alguna razón no ejecutar) sería:
400 + 040 + 004y 010y200
Eso suma 600 + 050 + 004 = 654.
Entonces podría ejecutar el comando.
chmod +654 /path/to/file.extension para configurarlo
Y para configurar 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
Para quitar todos los permisos de 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, en la que puede marcar las opciones que desee y le da el comando:

Sin embargo, no todas las combinaciones posibles son razonables de usar; Los principales que se utilizan son los siguientes:
755 - Ownertiene todo, Groupy Otherpuede leer y ejecutar
700 - Ownertiene todo
644 - Ownerpuede leer y escribir, Groupy Otherpuede leer
600 - Ownerpuede leer y escribir
Y, si está utilizando grupos de usuarios no triviales:
775 - Ownerpuede leer y escribir, Groupy Otherpuede leer
770 - Ownery Grouptiene todo, y Otherpuede leer y ejecutar
750: Ownertiene todo y Grouppuede leer y ejecutar
664 - Ownery Grouppuede leer y escribir, y Othersolo puede leer
660 - Ownery Grouppuede leer y escribir
640 - Ownerpuede leer y escribir, y Grouppuede leer
777 y 666 rara vez se usan, excepto en / tmp.
¡Gracias Ilmari Karonen por señalar los de uso común!