Che cosa è $PATH?
Come posso avere comandi / programmi che sono disponibili solo per me?
Ho visto questo percorso ~/binmenzionato prima, ma a cosa serve e come lo uso?
Che cosa è $PATH?
Come posso avere comandi / programmi che sono disponibili solo per me?
Ho visto questo percorso ~/binmenzionato prima, ma a cosa serve e come lo uso?
Risposte:
$ PATH è una variabile d'ambiente utilizzata per cercare i comandi. ~ È la tua directory home, quindi ~ / bin sarà / home / user / bin; è una directory normale.
Quando si esegue "ls" in una shell, ad esempio, si esegue effettivamente il programma / bin / ls; la posizione esatta potrebbe differire in base alla configurazione del sistema. Questo accade perché / bin è nel tuo $ PATH.
Per vedere il percorso e trovare dove si trova un comando particolare:
$ echo $PATH
/home/user/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:...
$ which ls # searches $PATH for an executable named "ls"
/bin/ls
$ ls # runs /bin/ls
bin desktop documents downloads examples.desktop music pictures ...
$ /bin/ls # can also run directly
bin desktop documents downloads examples.desktop music pictures ...
Per avere la tua directory bin privata, devi solo aggiungerla al percorso. Fallo modificando ~ / .profile (un file nascosto) per includere le righe seguenti. Se le righe sono commentate, devi solo decommentarle; se sono già lì, sei pronto!
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ]; then
PATH="$HOME/bin:$PATH"
fi
Ora è necessario creare la directory ~ / bin e, poiché .profile viene eseguito all'accesso e aggiunge ~ / bin solo se esiste in quel momento, è necessario accedere nuovamente per visualizzare il PERCORSO aggiornato.
Proviamolo:
$ ln -s $(which ls) ~/bin/my-ls # symlink
$ which my-ls
/home/user/bin/my-ls
$ my-ls -l ~/bin/my-ls
lrwxrwxrwx 1 user user 7 2010-10-27 18:56 my-ls -> /bin/ls
$ my-ls # lookup through $PATH
bin desktop documents downloads examples.desktop music pictures ...
$ ~/bin/my-ls # doesn't use $PATH to lookup
bin desktop documents downloads examples.desktop music pictures ...
typeper vedere come un comando reale verrà risolto dalla shell; es: which echoe type echoriporterà cose diverse, whichrestituisce '/ bin / echo' ma 'type' restituisce che si tratta di una shell incorporata, che la shell preferirà al file in '/ bin'.
whichè meglio sostituito da typeo commandin shell interattive ed è completamente inutile negli script.
$HOMEvariabile in $PATHper qualche motivo non funziona, cioè bisogna usare ~invece il segno.
Per quanto riguarda ~/bine comandi / programmi disponibili solo per l'utente
Le versioni recenti di Ubuntu includono la ~/bindirectory nella tua $PATH, ma solo se la ~/bindirectory esiste.
Se non esiste:
Assicurati che ~/.profilecontenga la seguente stanza (quella predefinita ~/.profilegià lo fa):
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Crea la ~/bindirectory:
mkdir -p ~/bin
Riavvia il computer o forza bash a rileggere ~/.profile:
exec -l bash
exec -l bashsuggerimento "riavvio o ". Cosa fa la -lbandiera? Non sto trovando una spiegazione in man exec.
exec -leseguirà bash come shell di login [ wiki.bash-hackers.org/commands/builtin/exec] . In breve, forza bash a rileggere /etc/profilee ~/.profile. Solo la corsa exec bashrileggerà solo ~/.bashrc.