¿Cómo ejecutar un script de shell en OS X haciendo doble clic?

Tengo un script de shell que tiene permiso de ejecución de usuario en OS X, pero cuando hago doble clic en él, se abre en un editor de texto. ¿Cómo puedo hacer que se ejecute haciendo doble clic en él?

  • Primero en la terminal, haga la secuencia de comandos ejecutable escribiendo:

    chmod a+x (yourscriptname) 
  • Luego, en Finder, haz clic con el botón derecho en tu archivo y selecciona “Abrir con” y luego “Otro …”.

  • Aquí selecciona la aplicación en la que desea que se ejecute el archivo, en este caso sería Terminal. Para poder seleccionar el terminal, debe cambiar de “Aplicaciones recomendadas” a “Todas las aplicaciones”. (La aplicación Terminal.app se puede encontrar en la carpeta Utilidades)

  • TENGA EN CUENTA que, a menos que no desee asociar todos los archivos con esta extensión para que se ejecuten en el terminal, no debe haber marcado “Abrir siempre con”.

  • Después de hacer clic en Aceptar, podrá ejecutar su secuencia de comandos simplemente haciendo doble clic en ella.

¿Has probado usar la extensión de nombre de archivo .command ?

A partir de OSX 10.10 (Yosemite) y al menos OS X 10.8 (Mountain Lion) , el comportamiento es el siguiente al abrir (hacer doble clic) los scripts ejecutables del Finder :

  • Guiones ejecutables [1] con sufijo NO o sufijo .command :
    • se ejecutan por defecto – no se requiere configuración :
      • se abre una nueva ventana de Terminal en la que se ejecuta la secuencia de comandos.
      • de forma predeterminada, la ventana permanecerá abierta después de que finalice el script para que pueda inspeccionar el resultado (aunque en ese momento el shell que ejecutó el script ha salido y ya no puede interactuar con él ).
        Sin embargo, a través de las Preferences... > Profiles de Terminal Preferences... > Profiles puede optar por cerrar automáticamente la ventana cuando el script se cierre .
    • Advertencia : la carpeta de trabajo es invariablemente la carpeta de inicio del usuario actual , NO la carpeta en la que se encuentra el script.
      • Para hacer que un script de shell cambie a la carpeta en la que se encuentra, coloque
        • cd -- "$(dirname "$BASH_SOURCE")" justo después de la línea shebang
        • o, si debe seguir siendo compatible con POSIX, cd -- "$(dirname "$0")" .
        • Para casos extremos, como encontrar el verdadero directorio fuente de un script enlazado , vea esta respuesta mía.
    • Si el script inesperadamente no es ejecutable :
      • Hazlo ejecutable ejecutando chmod +x en Terminal; de lo contrario, verás los siguientes síntomas:
      • .command : Finder muestra un mensaje de error engañoso que sugiere que el problema puede solucionarse a través de File > Get Info , lo que no es cierto: utilice el método chmod +x sugerido anteriormente.
      • sin sufijo
        • con una línea shebang (p #!/bin/bash ej., #!/bin/bash ): el comportamiento es como si el sufijo fuera .sh - ver a continuación.
        • sin línea shebang: se abre en su editor de texto predeterminado (que es TextEdit por defecto).
  • Scripts con el sufijo .sh , ya sea ejecutable o no:
    • se abren para editar en TextEdit.app o, si está instalado, con Xcode.app .
  • Scripts con el sufijo .scpt o .applescript (incluso si ellos mismos están marcados como ejecutables, lo que normalmente no es el caso):
    • abierto para editar en [Apple]Script Editor
    • Tenga en cuenta que los archivos de código fuente de JXA parecen no tener un sufijo distintivo (aún).
  • Scripts con un sufijo personalizado (un sufijo que aún no conoce el sistema), ya sea ejecutable o no (de hecho, se aplica a cualquier tipo de archivo):
    • le pedirá que abra la aplicación para que la abra la primera vez y recuerde esa opción .

[1] Ejecutable significa: una secuencia de comandos con los bits de permisos ejecutables establecidos y el usuario llamante - relativo a la propiedad del archivo - por lo que potencialmente se le permite ejecutarlo.
Si utiliza chmod a+x para establecer todos los bits de permiso (lo que es típico), cualquiera puede invocarlo (suponiendo que también se les permita leer el archivo según los bits de permiso de lectura y la propiedad del archivo).

Alternativamente, puedes crear una aplicación regular de Mac OS X desde tu script usando Platypus

La manera más fácil es cambiar la extensión a .command o sin extensión.

Pero eso abrirá la Terminal y tendrás que cerrarla. Si no desea ver ningún resultado, puede usar Automator para crear una Aplicación de Mac en la que pueda hacer doble clic, agregar a la base, etc.

  1. Abra la aplicación Automator
  2. Elija el tipo de “Aplicación”
  3. Escriba “ejecutar” en el cuadro de búsqueda Acciones
  4. Haga doble clic en “Ejecutar script de shell”
  5. Haga clic en el botón Run en la esquina superior derecha para probarlo.
  6. File > Save para crear la aplicación.

enter image description here

No es necesario usar aplicaciones de terceros como Platypus.

Simplemente cree un Apple Script con Script Editor y use el comando do shell script "shell commands" para llamadas de comando directo o archivos de script de shell ejecutables, mantenga el archivo de script editable seguro en algún lugar y expórtelo para crear un script de Aplicación. el script de la aplicación se puede abrir haciendo doble clic o selección en la carpeta de la barra.

También puede establecer los valores predeterminados por extensión de archivo usando RCDefaultApp:

http://www.rubicode.com/Software/RCDefaultApp/

potencialmente podría configurar .sh para abrir en iTerm / Terminal, etc. necesitaría permisos de ejecución de usuario, por ejemplo

 chmod u+x filename.sh 

Panel pref de RCDefaultApp

    Intereting Posts