Cosa sono "$ PATH" e "~ / bin"? Come posso avere script personali?

29

Che cos'è $PATH ?

Come posso avere comandi / programmi che sono disponibili solo per me?
Ho già visto questo percorso ~/bin menzionato prima, ma a cosa serve e come lo uso?

    
posta Braiam 28.10.2010 - 00:58

2 risposte

25

$ PATH è una variabile d'ambiente utilizzata per i comandi di ricerca. Il ~ è la tua home directory, 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 può variare in base alla configurazione del sistema. Ciò accade perché / bin si trova nel tuo $ PATH.

Per vedere il percorso e trovare dove si trova un particolare comando:

$ 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. Fai questo modificando ~ / .profile (un file nascosto) per includere le linee sottostanti. 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 devi creare la tua directory ~ / bin e, poiché .profile viene eseguito all'accesso e aggiunge ~ / bin solo se esiste in quel momento, devi accedere nuovamente per vedere il PATH aggiornato.

Facciamo un test:

$ 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  ...
    
risposta data Roger Pate 28.10.2010 - 00:58
17

Per quanto riguarda ~/bin e comandi / programmi disponibili solo per il tuo utente

Le versioni recenti di Ubuntu includono la directory ~/bin nel tuo $PATH , ma solo se esiste la directory ~/bin .

Se non esiste:

  1. Assicurati che il tuo ~/.profile contenga la seguente stanza (già il ~/.profile predefinito):

    # set PATH so it includes user's private bin if it exists
    if [ -d "$HOME/bin" ] ; then
        PATH="$HOME/bin:$PATH"
    fi
    
  2. Crea la directory ~/bin :

    mkdir -p ~/bin
    
  3. Riavvia il computer o forza bash a rileggere ~/.profile :

    exec -l bash
    
risposta data Danilo Piazzalunga 25.01.2013 - 12:09

Leggi altre domande sui tag