7 votos

¿Puede Finder y el comando "abrir" tratar los archivos con .sh u otras extensiones típicas igual que los archivos .command?

Estoy buscando una forma de inyectar algunas extensiones más en la base de datos de los servicios de lanzamiento de OS X de forma sistemática para que, al hacer clic, se ejecuten en la aplicación de terminal al igual que lo hacen los archivos .command por defecto.

Cosas como .ksh , .sh y .csh estaría bien para empezar, pero supongo que una vez que descubra cómo añadir uno, será fácil hacer el resto.

Una respuesta específica para Lion o Snow Leopard está bien, así que una respuesta de caso general para todas las versiones del SO no es necesaria. Sería estupendo si esto se pudiera programar y se escribiera directamente en la base de datos de Launch Services para poder automatizarlo en lugar de tener que ir al Finder en cada Mac y hacer un montón de clics.

3voto

Rook Puntos 119

Si un archivo se abre con Terminal, y tiene el bit de ejecución activado, entonces Terminal lo ejecutará.

Obtenga información sobre un archivo .sh y configúrelo para que se abra con Terminal, y haga clic en el botón Cambiar todo.

3voto

Tim Puntos 11

Para preferir Terminal para abrir archivos .sh - usando el comando por defecto, sin usar Finder

En la mayoría de los casos, todo lo que se requiere debería ser posible desde la línea de comandos

Preparación

Dos comandos:

defaults read com.apple.LaunchServices | grep -B 1 -A 3 public.shell-script

defaults read com.apple.LaunchServices | grep -B 1 -A 4 "LSHandlerContentTag = sh;"

Si cualquiera de los dos comandos revela una preferencia existente

Utilice Xcode o cualquier otro editor de listas de propiedades adecuado para eliminar el diccionario correspondiente del LSHandlers dentro del siguiente archivo:

~/Library/Preferences/com.apple.LaunchServices.plist

Pistas:


Añadir a las preferencias de LaunchServices, para que Terminal pueda ver y editar archivos .sh

Dos comandos de una sola línea.

Dependiendo de sus necesidades, el primer comando puede ser suficiente:

defaults write com.apple.LaunchServices LSHandlers -array-add '{ LSHandlerContentType = "public.shell-script"; LSHandlerRoleViewer = "com.apple.Terminal"; LSHandlerRoleEditor = "com.apple.Terminal"; }'

defaults write com.apple.LaunchServices LSHandlers -array-add '{ LSHandlerContentTag = "sh"; LSHandlerContentTagClass = "public.filename-extension"; LSHandlerRoleViewer = "com.apple.Terminal"; LSHandlerRoleEditor = "com.apple.Terminal"; }'

Para que se respeten las nuevas preferencias

Modificaciones de la capa de persistencia del dominio del usuario de Launch Services debe ser reconocido . Para ello, lo menos perjudicial para el usuario final será:

  • un reinicio del sistema operativo.

Desde la línea de comandos, si se acepta el reinicio inmediato:

sudo shutdown -r now


Antecedentes

Comprensión del soporte de Terminal.app para .sh (public.shell-script)

Considere el resultado del siguiente comando:

defaults read /Applications/Utilities/Terminal.app/Contents/Info

Terminal aparte por un momento: a veces es inapropiado (o simplemente no vale la pena) forzar la apertura de un tipo de documento, por parte de una app que es diseñado sin soporte para ese tipo.

Para la Terminal, imagino que no hay daño en el manejo de la public.shell-script tipo.

-1voto

La forma de hacer esto en Unix es abrir Terminal.app y poner los scripts como ejecutables con chmod +x scriptname.sh .

O puede hacer un enlace de /bin/bash a /Applications y definir /Applications/bash para que sea la aplicación por defecto para los archivos .sh en el diálogo Get Info. Pero esto parece ser un poco extraño IMHO.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X