¿Cómo hago que este archivo.sh sea ejecutable con doble clic?

165

Primero estoy usando Mac.

A continuación, necesito ejecutar este "file.sh", lo llamaremos. Cada vez que necesito ejecutarlo, tengo que abrir Terminal y escribir:

cd /Users/Jacob/Documents/folderWithFileInIt
bash file.sh

Esto está bien, pero creo que sería mucho más rápido si hago que el archivo se ejecute con doble clic, ¿no le parece?

Entonces mi pregunta es, ¿cómo hago que este archivo sea ejecutable con doble clic?

Mis ideas fueron:

a) escriba algo como chmod en la terminal y cambie los permisos?

b) hacer un archivo, poner el código que escribí arriba ^ y luego hacer que ese archivo sea ejecutable?

c) hacer una automatización de alguna manera para hacer esto?

¿Cuál es la mejor manera, o hay una mejor manera? También explique todo lo que pueda, soy nuevo en Terminal. Gracias.

Jacob
fuente
1
Si desea un script agradable y fácil de hacer clic, entonces sí, Automator es la herramienta adecuada. Parece saberlo por su pregunta, entonces, ¿cuál es su pregunta?
Rob Napier el
misma pregunta pero tengo jdk dmg, alguna carpeta de aplicación para crear íconos, algo de Jar ... pero no pude ejecutar / crear a través de automator o .command
SANTOSH

Respuestas:

350

Por defecto, los *.sharchivos se abren en un editor de texto (Xcode o TextEdit). Para crear un script de shell que se ejecutará en Terminal cuando lo abra, asígnele el nombre con la extensión "comando", por ejemplo,file.command . Por defecto, estos se envían a Terminal, que ejecutará el archivo como un script de shell.

También deberá asegurarse de que el archivo sea ejecutable, por ejemplo:

chmod +x file.command

Sin esto, Terminal se negará a ejecutarlo.

Tenga en cuenta que el script no tiene que comenzar con un #!prefijo en este escenario específico, porque Terminal se encarga específicamente de ejecutarlo con su shell predeterminado. (Por supuesto, puede agregar un#! línea si desea personalizar qué shell se usa o si desea asegurarse de que puede ejecutarlo desde la línea de comando mientras usa un shell diferente).

También tenga en cuenta que Terminal ejecuta el script de shell sin cambiar el directorio de trabajo. Tendrá que comenzar su script con un cdcomando si realmente lo necesita para ejecutarse con un directorio de trabajo en particular.

Chris Page
fuente
1
Gracias por la respuesta más útil.
Jacob
46
También puede usar cd "`dirname "$0"`"para establecer el directorio de trabajo actual en el directorio donde se encuentra su skript de shell.
gearsdigital
3
Por razones estéticas, también debe hacer clic derecho en el archivo .command y abrir la información. Allí tiene la opción de ocultar el sufijo (bajo nombre y sufijo).
Bijan
Yo uso este método para ejecutar aplicaciones a través del open -n ...comando. Funciona, pero cada vez que se abre la ventana de Terminal y me muestra "[Proceso completado]". ¿Es posible evitar la apariencia de la ventana de Terminal de alguna manera?
Nik
1
@Nik No tiene sentido ejecutarlo en Terminal si no quieres que aparezca en una ventana de terminal. En su lugar, conviértalo en un paquete de aplicaciones cuyo ejecutable sea un script shebang. O cree un applet AppleScript o Automator que ejecute el script. También puede usar las Preferencias de Terminal para cambiar el perfil para cerrar la ventana cuando el proceso finaliza, pero esa no es la mejor solución si solo desea ejecutar un script de shell sin interacción del usuario.
Chris Page
31

Elimine la extensión por completo y luego haga doble clic en ella. La mayoría de los scripts de shell del sistema son así. Mientras tenga un shebang , funcionará.

NobleUplift
fuente
1
Por cierto, "shebang" es principalmente esta línea delante de cualquier línea: #! / Bin / sh pero puede ser diferente, lea el enlace provisto para otros casos.
Lukas Liesis
¿Este enfoque no necesita hacer chmod?
Atul
11

Puedes decirle a Finder que abra el .sharchivo en la Terminal:

  1. Selecciona el archivo
  2. Obtenga información (cmd-i) sobre él
  3. En la sección "Abrir con", elija "Otro ..." en el menú emergente
  4. Elija Terminal como la aplicación

Esto tendrá exactamente el mismo efecto que renombrarlo, .commandexcepto que ... no tiene que cambiarle el nombre :)

Markus Amalthea Magnuson
fuente
8
  1. Terminal de lanzamiento
  2. Escriba -> nombre de archivo nano
  3. Pegue el contenido del archivo por lotes y guárdelo
  4. Escriba -> chmod + x fileName
  5. Creará un archivo exe ahora que puede hacer doble clic y hacerlo.

El nombre del archivo debe aparecer entre comillas dobles. Como estoy usando Mac-> En mi caso, el contenido del archivo por lotes es

cd / Users / yourName / Documents / SeleniumServer

java -jar selenium-server-standalone-3.3.1.jar -role hub

Funcionará seguro

Manish
fuente
0

puedes cambiar el archivo ejecutable usando chmodesto

chmod 755 file.sh

y usa este comando para ejecutar

./file.sh
Codificador Nocturno
fuente
Bienvenido a SO! Su respuesta no agrega nada a la respuesta ya aceptada. Por favor explique por qué es esto diferente de las otras respuestas que ya existen.
GabrielOshiro