Can Finder e il comando "apri" trattano i file con .sh o altre estensioni tipiche proprio come i file .command?

7

Sto cercando un modo per iniettare più estensioni nel database dei servizi di lancio di OS X in modo sistematico in modo che, quando si fa clic, vengano eseguite nell'app terminale proprio come i file .command di default.

Cose come .ksh , .sh e .csh sarebbero belle da avviare, ma presumo che una volta capito come aggiungerne uno, è facile fare il resto.

Una risposta specifica a Lion o Snow Leopard va bene, quindi non è necessaria una risposta generica per tutte le versioni del sistema operativo. Sarebbe bello se questo fosse scriptabile e scritto direttamente nel database di Launch Services in modo da poter automatizzare questo piuttosto che andare su finder su ogni mac e fare un sacco di clic.

    
posta bmike 04.08.2011 - 22:46
fonte

3 risposte

3

Se un file viene aperto con Terminal e il bit di esecuzione è impostato, Terminal lo eseguirà.

Ottieni informazioni su un file .sh e impostalo per essere aperto con Terminal, quindi fai clic sul pulsante Cambia tutto.

    
risposta data 05.08.2011 - 01:50
fonte
3

Per preferire Terminal per aprire i file .sh - utilizzando il comando defaults, senza usare Finder

Nella maggior parte dei casi, tutto ciò che è necessario dovrebbe essere possibile dalla riga di comando ...

Preparazione

Due comandi:

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;"

Se uno dei due comandi rivela una preferenza esistente

Utilizza Xcode o qualsiasi altro editor di elenchi di proprietà appropriato per rimuovere il dizionario pertinente dalla chiave LSHandlers nel seguente file:

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

Suggerimenti:

Aggiunta alle preferenze LaunchServices, per Terminal per visualizzare e modificare i file .sh

Due comandi a una riga.

A seconda delle esigenze, il primo comando da solo può essere sufficiente:

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"; }'

Per le nuove preferenze da rispettare

Le modifiche al livello di persistenza del dominio utente dei servizi di lancio devono essere riconosciute . Per questo, meno dirompente per l'utente finale sarà:

  • un riavvio del sistema operativo.

Dalla riga di comando, se il riavvio immediato è accettabile:

sudo shutdown -r now

Sfondo

Informazioni su Terminal.app supporto per .sh (public.shell-script)

Considera il risultato del seguente comando:

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

Terminale da parte per un momento: a volte è inappropriato (o semplicemente inutile) forzare l'apertura di un tipo di documento, da un'app che è progettata senza supporto per quel tipo.

Per Terminale, non intendo arrecare danno nella gestione del tipo public.shell-script .

    
risposta data 29.04.2012 - 14:21
fonte
-1

Il modo Unix per farlo è aprire Terminal.app e impostare gli script su eseguibile con chmod +x scriptname.sh .

Oppure puoi creare un collegamento da / bin / bash a / Applicazioni e definire / Applicazioni / bash per essere l'applicazione predefinita per i file .sh nella finestra di dialogo Ottieni informazioni. Ma questo sembra essere un po 'strano IMHO.

    
risposta data 05.08.2011 - 00:03
fonte

Leggi altre domande sui tag