OS X: crea una directory bin personale (~ / bin) ed esegui gli script senza specificare il loro percorso completo


19

Quindi, quello che sto cercando di fare è creare una bindirectory personale nella mia cartella home. Ho creato la seguente cartella:

/Users/thi/bin

Ho messo i miei script in questa cartella, ma se scrivo nel Terminale:

myScript

Non funziona.

Mi è stato detto che devo esportare questo percorso bin, qualcosa a cui si riferisce echo $PATH, ma non so come farlo.


vedi anche verso la fine di apple.stackexchange.com/a/98626
nohillside

Risposte:


20

È necessario aggiungere quanto segue al file ~/.profile:

export PATH=/Users/thi/bin:$PATH

Poi source ~/.profile

Si noti che potrebbe essere necessario creare questo file e, poiché inizia con un ., potrebbe non essere visibile nel Finder per la modifica tramite un'applicazione come un editor di testo. Per elencare tutti i file inclusi quelli nascosti, utilizzare:

ls -la ~/

Se aggiungo export PATH = / Users / thi / bin: $ PATH al mio file .bashrc, funzionerà? È corretto?
Thi G.,

12
Meglio usare $HOME/bininvece di /Users/thi/bin. Sarai quindi in grado di copiare le tue impostazioni su un altro computer, dove il tuo nome utente è forse diverso.
partire dal

Se scrivo nel terminale: PATH = $ HOME / bin: $ PATH e quindi digito: export PATH. Farà il trucco?
Thi G.

1
Se lo fai, cambierà le impostazioni ora, ma non su stivali futuri. Per modificare il percorso in modo che sopravviva al riavvio, è necessario includere tali comandi nel .profilefile.
Daniel

1
Ottimo, grazie a tutti per le risposte. Ho aggiunto export PATH=$HOME/bin:$PATHal mio $HOME/.bash_profile.
Gio G.

10

Se usi bash, aggiungi una riga come questa a ~/.bash_profile:

PATH=~/bin:$PATH

PATHè contrassegnato per l'esportazione per impostazione predefinita, quindi non è necessario utilizzarlo export.

Se entrambi esistono ~/.bash_profileed ~/.profileesistono, bash legge solo ~/.bash_profilequando viene invocato come shell di login interattiva. ~/.profileè anche usato da altre shell che potrebbero non comprendere le stesse opzioni di configurazione di bash.

Terminal e iTerm 2 aprono nuove shell come shell di login per impostazione predefinita. Quando bash viene invocato come shell di login interattiva, legge ~/.bash_profilema non ~/.bashrc. Gli emulatori di terminali su altre piattaforme spesso aprono nuove shell come shell non di accesso, quindi ad esempio bash legge ~/.bashrcma non ~/.bash_profile. Gli utenti di OS X utilizzano spesso ~/.bash_profilecome file di configurazione personale corrispondente ~/.bashrcsu altre piattaforme, ma è anche comune eseguire il source ~/.bashrcda ~/.bash_profileo dire a Terminal o iTerm 2 di aprire nuove shell come shell non di accesso.

È inoltre possibile modificare il percorso più globalmente in /etc/pathso /etc/launchd.conf, ma in molti contesti il ​​percorso verrà comunque impostato su predefinito /usr/bin:/bin:/usr/sbin:/sbin. E ho davvero avuto solo bisogno di cambiare il percorso nelle shell e negli editor di testo.


Ottimo, grazie per la risposta. Ho aggiunto export PATH=$HOME/bin:$PATHal mio $HOME/.bash_profile.
Gio G.

Non è necessario esportare ed entrambi ~(quando non quotati) e $HOMEvengono espansi prima dell'assegnazione della variabile sia quando si utilizza l'esportazione o un compito semplice.
Lri,

Lauri Ranta, cosa preferisci personalmente .bash_profileo .profile? O hai un .bashrcnella tua home directory?
Gio G.

Prima usavo solo .bash_profile, ma ora uso .bashrc come file di configurazione principale e il mio .bash_profile contiene solo . ~/.bashrc. Le nuove shell vengono aperte come shell non di accesso nella modalità shell in emacs e in tmux. Non userei .profile come file di configurazione principale, perché viene letto anche da altre shell come ksh.
Lri,

3

In genere inseriresti percorsi aggiuntivi $PATHcome like PATH=$PATH:/$HOME/binperché se non vuoi sostituire un altro eseguibile con lo stesso nome che potrebbe trovarsi /bin, ecc.


4
Si potrebbe facilmente sostenere che si sarebbe messo $HOME/binall'inizio esattamente per quel motivo. Ma la cosa fondamentale è che l'ordine delle directory è $PATHimportante e che la shell sceglierà il primo comando corrispondente. Grazie per averlo segnalato.
Nohillside
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.