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?
233
Primero en la terminal, haga que el script sea ejecutable escribiendo:
chmod a+x (yourscriptname)
Luego, en Finder, haga clic derecho en su archivo y seleccione "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 debería tener marcada la opción "Abrir siempre con".
.command
es ejecutable de manera predeterminada desde Finder, sin la necesidad de indicarle a Finder cómo abrirlo..command
extensión del archivo.¿Has intentado usar la
.command
extensión de nombre de archivo?fuente
chmod +x
) pero la.command
extensión ya está vinculada con Terminal. Gran solución, graciasA partir de OSX 10.10 (Yosemite) y desde al menos OS X 10.8 (Mountain Lion) , el comportamiento es el siguiente cuando abre (hace doble clic) scripts ejecutables desde Finder :
.command
:Sin embargo, a través de la Terminal
Preferences... > Profiles
puede optar por cerrar automáticamente la ventana cuando salga el script.cd -- "$(dirname "$BASH_SOURCE")"
justo después de la línea shebangcd -- "$(dirname "$0")"
.chmod +x <script>
en Terminal; de lo contrario, verá los siguientes síntomas:.command
: Finder muestra un mensaje de error engañoso que sugiere que el problema se puede solucionar a través deFile > Get Info
, lo que no es cierto; utilice elchmod +x
método sugerido anteriormente.#!/bin/bash
): el comportamiento es como si el sufijo fuera.sh
- ver más abajo..sh
, ya sea ejecutable o no:TextEdit.app
o, si está instalado, conXcode.app
..scpt
o.applescript
(incluso si están marcados como ejecutables, que normalmente no es el caso):[Apple]Script Editor
[1] Ejecutable significa: una secuencia de comandos con los bits de permiso ejecutable establecidos y el usuario llamante, en relación con la propiedad del archivo, por lo tanto, potencialmente se le permite ejecutarlo.
Si usa
chmod a+x
para configurar todos los bits de permiso (lo cual es típico), cualquiera puede invocarlo (suponiendo que también se les permita leer el archivo en función de los bits de permiso de lectura y la propiedad del archivo).fuente
osascript
que puede incluir dentro del.command
archivo en lugar de jugar manualmente con el perfil.osascript -e '...'
comando al final del script? ¿Cuál es el comando específico y se asegura de que la pestaña derecha esté cerrada incluso cuando el script no se está ejecutando en la pestaña frontal?osascript -e 'tell application "Terminal" to close front window' > /dev/null 2>&1 &
... Puede que no funcione en todos los escenarios, aunque la redirección en el El final es realmente la clave: de lo contrario, el osascript puede adaptarse fácilmente (por ejemplo , es posible que la ventana deba cambiarse a tab si ese es el comportamiento predeterminado de su terminal, etc.)..command
ejecutar el archivo de script a pesar de la configuración del perfil?bash
script, agregueread -p 'Press Return to close this window.'
como la última declaración.Alternativamente, puede crear una aplicación normal de Mac OS X a partir de su script usando Platypus
fuente
La manera fácil es cambiar la extensión a
.command
o no extensión.Pero eso abrirá la Terminal, y tendrá que cerrarla. Si no desea ver ningún resultado, puede usar Automator para crear una aplicación para Mac en la que puede hacer doble clic, agregar al dock, etc.
Automator
Aplicación abiertaRun
botón en la esquina superior derecha para probarlo.File > Save
para crear la aplicación.fuente
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 directas a comandos o archivos ejecutables de script de shell, mantenga el archivo de script editable seguro en algún lugar y luego expórtelo para crear un script de aplicación. el script de la aplicación se puede iniciar haciendo doble clic o seleccionando en la carpeta de la barra.fuente
También puede establecer valores predeterminados por extensión de archivo usando RCDefaultApp:
http://www.rubicode.com/Software/RCDefaultApp/
potencialmente podría configurar .sh para que se abra en iTerm / Terminal, etc. necesitaría permisos de ejecución del usuario, por ejemplo
fuente
chmod 774 filename
Nota : El archivo con el nombre 'nombre de archivo' que tiene el script bash no tiene extensión
fuente