Rendendo la funzione ~ / .bashrc chiamabile per configurare un ambiente

3

Ho un'app installata per chiamarla my_app che desidero essere in grado di chiamare dalla riga di comando. Si trova in /Applications/my_app.app/Contents/Resources .

Quindi quello che speravo di fare era avere il mio ~/.bashrc come il seguente:

# .bashrc

my_app-start(){
export PATH=$PATH:/Applications/my_app.app/Contents/Resources/
}

e poi ogni volta che voglio essere in grado di utilizzare l'app da una nuova sessione terminale caricherò call my_app-start dopo di che mi aspetto che la mia app sia richiamabile digitando semplicemente my_app ovunque sul mio sistema. Tuttavia il mio terminale non riconosce la funzione my_app-start ... Su un'altra piattaforma Linux questo funziona per me, ma forse i Mac hanno bisogno di giocherellare con ~ / .bash_profile. Non ho mai capito la differenza.

  1. Come faccio a rendere la funzione richiamabile automaticamente?
  2. Questo metodo è un modo sicuro e ragionevole per caricare la mia applicazione?
posta Dipole 07.07.2016 - 23:22
fonte

2 risposte

3

La tua funzione non funziona perché OS X avvia la tua shell come shell di login, quindi .bashrc non viene letto. Non userei una funzione in questo caso. Se esiste un solo file eseguibile in /Applications/my_app.app/Contents/Resources/ , utilizzerei un alias.

Userei file separati quando cambi il tuo ambiente. Imposta il tuo PERCORSO e qualunque cosa in questi / questi file (s) allora in qualsiasi momento fonte il tuo file di ambiente e il tuo bene per andare. Ad esempio, ho installato il set di strumenti AST. Sto testando gli strumenti forniti da AST ma ho bisogno di usare il PATH minimo fornito da OS X e il PATH agli strumenti AST. Quindi, devo modificare il mio PERCORSO che è impostato nel mio .profile. Ho creato un file .astenv nella mia cartella home.

#
#  .astenv
#
#  The AT&T Software Technology tools from AT&T Research
#
#

PATH=$(/usr/bin/getconf PATH)
ASTPATH=$HOME/local/opt/ast-master/arch/darwin/bin

PATH=$ASTPATH:$PATH
export PATH

Per utilizzare questo file di configurazione, posso avviare una nuova sessione di terminale e generare il file,

. ~/.astenv

o nella mia sessione terminale corrente avvia una nuova istanza della mia shell, quindi apri il file.

ksh
. ~/.astenv

Quando I exit questa shell, torno al mio ambiente originale.

    
risposta data 07.07.2016 - 23:48
fonte
2

Perché non creare semplicemente un link simbolico in /usr/local/bin ?

ln -s /foo/bar/hello_world.app /usr/local/bin/hello_world.app

Non dovrai creare alcuna funzione in .bashrc

In effetti, ciò che ho fatto con gli script che ho scritto che hanno più versioni, è creare un collegamento simbolico a un file con il testo "-latest" e quindi copiare l'ultima versione in quel file.

Il mio link simbolico assomiglia a questo:

ln -s /foo/bar/my_app-latest.app /usr/local/bin/my_app.app

Ogni volta che ho una nuova versione, copio solo my_app-latest.app e tutto viene aggiornato.

    
risposta data 07.07.2016 - 23:29
fonte

Leggi altre domande sui tag