2013-02-17 12 views
6

Sono relativamente nuovo a Linux e Unix. Con l'aiuto di Internet ho finalmente capito come funzionano gli $PATH e gli alias nel mio .bashrc.

Ma non sono riuscito a trovare nulla che descriva quando utilizzare quale.

Diciamo che ho installato Python3.3 in Library/Frameworks e l'eseguibile è /Library/Frameworks/Python.framework/Versions/3.3/bin/python3, ma voglio eseguire python 3.3 semplicemente digitando python3 nel mio terminale.

Quando ho ben capito, ci sono (almeno) tre metodi per raggiungere questo obiettivo:

1) I modificano $ PATH nel mio .bashrc:

export PATH=/Library/Frameworks/Python.framework/Versions/3.3/bin:${PATH} 

2) Ho impostato un alias nel mio .bashrc:

alias python3=/Library/Frameworks/Python.framework/Versions/3.3/bin 

3) creare un collegamento simbolico (collegamento simbolico):

ln -s /Library/Frameworks/Python.framework/Versions/3.3/bin /usr/local/bin 

Cosa diresti (dalla tua esperienza) è il modo "consigliato"?

+1

Non credo che il tuo 'alias' e' ln comandi -s' siano corrette. Probabilmente vuoi farli usare tutti 'bin/python3' non solo'/bin' – FoolishSeth

+0

E potresti anche aggiungere una 'funzione' nel tuo' .bashrc' –

+0

grazie, hai ragione, dovrebbe essere decisamente '... bin/python3' –

risposta

7

Inserire il numero python3 nel percorso è il modo corretto di richiamarlo ovunque ci si trovi nel proprio file system. Un collegamento simbolico è il modo migliore per cambiare quel comando a python e mantenere gli script non dipendenti dalla versione (puoi eseguire uno script che dipende da python usa il link simbolico e uno script che richiede python 3.0 in particolare usa python3, anche se sul tuo computer Sono la stessa cosa). I link simbolici sono ancora file nel tuo filesystem, quindi devono ancora essere nel tuo percorso.

Vedo solo gli alias utilizzati quando si tenta di creare un tipo di comportamento diverso dal comportamento predefinito per un'utilità della riga di comando come un alias per ls che aggiunge -un silenzio.

Anche i collegamenti simbolici sono memorizzati nel filesystem quindi, una volta creati, esistono per tutti gli altri utenti che accedono, mentre gli alias si applicano solo all'utente connesso che li ha definiti. Possono anche avere autorizzazioni di file applicate a loro.

Ecco a fun article su cose che puoi fare al tuo terminale tramite il tuo .bash_profile inclusi alcuni ottimi alias.

+0

Il link all'articolo divertente dovrebbe ora essere: http://digitalformula.net/articles/pimp-my-prompt-like-paul-irish/4/ (ma modificando la risposta non funziona perché la modifica <6 caratteri). – user766353

+0

Oops, mi dispiace per quello. È un grande articolo, felice di vedere il collegamento funzionare di nuovo. –

0

Vorrei suggerire un alias che renderebbe più semplice l'insorgere di conflitti con versioni diverse di Python. La shell cercherà la variabile PATH e, ovunque corrisponda all'eseguibile di Python, la eseguirà. L'alias deve essere inserito nel tuo profilo shell come .bash_profile.

+1

Penso che un collegamento simbolico in "PATH" sia migliore dell'alias, non è necessario che il proprio profilo bash sia stato modificato quando l'applicazione predefinita è cambiata. –

4

Innanzitutto, non vi è alcun motivo per installare Python in una directory . Il mio suggerimento è che (almeno per un principiante) non dovresti aggiungere directory di primo livello come il tuo /Library.Se si compila dal codice sorgente, si dovrebbe avere built it con uno standard ./configure (e va probabilmente in /usr/local/)

non so bene di compilazione di Python dal codice sorgente, ma la maggior parte del codice sorgente di Linux ottiene per default ./configure -d per un /usr/local/ prefisso così il loro binario andare in /usr/local/bin/ che spesso è già di default nei tuoi PATH

Alcune distribuzioni Linux hanno un /etc/profile che indirettamente, se la directory $HOME/bin/ esiste, aggiunge all'interno del vostro PATH; in tal caso, basta aggiungere binari e script (o collegamenti simbolici) in modo molto semplice.

Il mio consiglio generale è di evitare di avere uno PATH molto lungo o molto specifico. In particolare, l'aggiunta di una directory all'interno di PATH per ciascun prodotto è un errore IMHO. Vedi per es. directory-variables section of GNU coding standards e mantieni il tuo PATH piuttosto breve. Personalmente aggiungo programmi solo in /usr/local/bin/ (a livello di sistema) o in $HOME/bin/, forse come collegamenti simbolici (quindi non cambio il mio PATH poiché contiene già entrambi /usr/local/bin/ e $HOME/bin).

Con l'esperienza passata con un tempo molto lungo PATH è un incubo, e rallenta lo shell interattive

+0

Grazie, è stato molto utile, cercherò di mantenere il mio percorso breve. Per l'installazione di Python: a questo punto non sapevo molto di Linux/Unix e ho appena scaricato il programma di installazione MacOSX per Python 3.3 dal sito web ufficiale di python, e questa era la posizione di installazione predefinita. –

0

Grazie a tutti per le vostre spiegazioni.

Come ho già detto, sono abbastanza nuovo per Unix e Linux. Ho appena scritto un articolo su queste cose (alias, symlink $ PATH) per il mio blog per altri "neofiti". Mi piace scrivere di queste cose, perché mi interessano davvero, e voglio condividere le mie esperienze - spero che siano utili anche ad altre persone. Inoltre, mi aiuta ad approfondire la mia comprensione se devo spiegare le cose - ed è anche un buon riferimento futuro!

Sarebbe bello se si potesse sfogliare l'articolo molto rapidamente, e se ho sbagliato qualcosa, sarei molto felice dei suggerimenti!

http://scientific-ocean.com/2013/02/17/an-introduction-to-linuxunix-executables-path-aliases-and-symlinks/

Problemi correlati