¿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.


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.


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á.


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 :)


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


0

puedes cambiar el archivo ejecutable usando chmodesto

chmod 755 file.sh

y usa este comando para ejecutar

./file.sh

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.