Come si avvia un'applicazione.app memorizzata nella condivisione nfs dallo script di bash?

2

Devo eseguire *.app dalla nostra condivisione NFS in cui sono archiviate le diverse app e versioni.

Non riesco a farlo funzionare come parte di uno script bash.

Ad esempio, per Testo sublime, ecco il comando che uso per avviare:

elif [ 'uname' == "Darwin" ]; then
    exec open -a "/path/to/nfs/"Sublime\ Text.app" "$@"
fi

Quando chiamo il mio script, ottengo il seguente errore:

FSPathMakeRef(/path/to/nfs/Sublime Text.app) failed with error -43.

So che il percorso è giusto. Anche le autorizzazioni vanno bene. Sono in grado di avviarlo con il percorso completo exec open -a "/path/to/nfs/"Sublime\ Text.app/Contents/MacOS/"Sublime\ Text"" "$@" ma poi tutto il contenuto della cartella .app non è disponibile.

C'è un altro modo per avviare .app dalla riga di comando?

    
posta Kevin Lemaire 19.02.2018 - 17:50
fonte

1 risposta

4

Il problema principale che vedo con il tuo comando :

exec open -a "/path/to/nfs/"Sublime\ Text.app" "$@"

Hai usato un backslash per uscire da uno spazio mentre cita il comando . Utilizza uno o l'altro, ma non entrambi, ad esempio:

open -a "/path/to/nfs/Sublime Text.app"

o

open -a /path/to/nfs/Sublime\ Text.app

Non vedo alcun motivo per usare exec quando il open comando di per sé funziona in questo contesto, o da uno script , ad esempio:

open -a "/path/to/nfs/"Sublime Text.app" "$@"

Detto questo, però, quando usi il comando open con l'opzione -a potresti prendere in considerazione l'utilizzo dell'opzione --args , che dalla sua pagina man afferma, "Tutti gli argomenti rimanenti vengono passati all'applicazione aperta nel parametro argv a main (). Questi argomenti non vengono aperti o interpretati dallo strumento open .", rendendo quindi il comando come, ad esempio:

open -a "/path/to/nfs/"Sublime Text.app" --args "$@"
    
risposta data 19.02.2018 - 20:21
fonte

Leggi altre domande sui tag