Para preferir que la Terminal abra archivos .sh, usando el comando predeterminado, sin usar el 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 comandos revela una preferencia existente
Use Xcode o cualquier otro editor de lista de propiedades adecuado para eliminar el diccionario relevante de la clave LSHandlers
dentro del siguiente archivo:
~/Library/Preferences/com.apple.LaunchServices.plist
Sugerencias:
Agregando a las preferencias de LaunchServices, para que Terminal vea y edite archivos .sh
Dos comandos de una línea.
Dependiendo de sus requisitos, el primer comando solo 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
Las modificaciones a la capa de persistencia del dominio de usuario de Servicios de lanzamiento deben ser reconocidas . Para esto, lo menos perturbador para el usuario final será:
- un reinicio del sistema operativo.
Desde la línea de comandos, si el reinicio inmediato es aceptable:
sudo shutdown -r now
Fondo
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
Dejando de lado el terminal por un momento: a veces es inapropiado (o simplemente sin valor) forzar la apertura de un tipo de documento, por una aplicación que está diseñada sin soporte para ese tipo.
Para Terminal, imagino que no hay daño en el manejo del tipo public.shell-script
.