Alias: differenza tra .bash_rc, .bash_aliases e / usr / local / bin


9

Giocando con Terminal, ho notato che ci sono molti modi per creare alias permanenti .

Sono un novizio di Linux, e da quello che so, sto facendo:

  1. sudo ln -s /path/to/executable /usr/local/bin/desired_alias
  2. aggiungendo desired_alias = '/path/to/executable'a~/.bashrc
  3. decommentando quelle righe in ~/.bashrc:

    if [ -f ~/.bash_aliases ]; then
        . ~/.bash_aliases
    fi
    

    e mettendo desired_alias = '/path/to/executable'in~/.bash_aliases

tutti hanno lo stesso effetto.

Qual è la differenza tra il primo e il secondo metodo?

Risposte:


10

Con il primo metodo non si sta creando un alias, si sta creando un collegamento simbolico. I collegamenti simbolici sono abbreviati per collegamenti simbolici:

I collegamenti simbolici sono file che fungono da puntatori ad altri file. [...] Un collegamento simbolico è un tipo speciale di file il cui contenuto è una stringa che corrisponde al percorso di un altro file, il file a cui fa riferimento il collegamento. In altre parole, un collegamento simbolico è un puntatore a un altro nome e non a un oggetto sottostante.

Maggiori informazioni sui link simbolici qui e qui .

Solo con il secondo metodo, infatti, stai creando un alias.

Gli alias consentono di sostituire una stringa con una parola quando viene utilizzata come prima parola di un semplice comando. La shell mantiene un elenco di alias che possono essere impostati e non impostati con i comandi integrati alias e unalias (vedere COMANDI INCORPORATI SHELL di seguito). La prima parola di ogni semplice comando, se non quotata, viene controllata per vedere se ha un alias. In tal caso, tale parola è sostituita dal testo dell'alias.

È possibile definire un alias ovunque in cui è possibile digitare un comando e fare in modo che la shell ( bash in questo caso) lo interpreti, tuttavia, affinché l'alias sia disponibile in altre shell, deve essere definito in un file interpretato dalla shell all'avvio (avvio della shell, non avvio del computer).

Per bash questi sono /etc/bash.bashrc(a livello di sistema) e ~/.bashrc. Questi file vengono interpretati all'avvio della shell in modalità interattiva (come quando si utilizza Terminal). Non parlerò dei file di profilo perché hanno uno scopo diverso.

Quindi, vuoi aggiungere i tuoi alias per ~/.bashrcrenderli disponibili in ogni shell interattiva.

Il .bash_aliasesmetodo realizza esattamente la stessa cosa che inserire gli alias ~/.bashrcma ha l'ulteriore vantaggio di essere più facile da analizzare e manipolare dai programmi.

La . ~/.bash_aliasesfonte dei mezzi (carico) _~/.bash_aliases_nel contesto della shell attualmente in esecuzione.


@lilo mi hai battuto il tutorial! +1
myusuf3

@gc Sto colpendo il sacco quindi scatenati :)
Li Lo

@lilo hahahha :)
myusuf3

1
Potresti pensare che funzioni allo stesso modo, ma non lo è. Si prega di leggere i materiali sui link simbolici che ho indicato nella mia risposta. Il collegamento simbolico e gli alias servono a scopi diversi e sono stati creati pensando a scopi diversi. Per darti un esempio del motivo per cui i collegamenti simbolici non funzionano come alias, prova questo: definisci un alias come: alias px = "ps axu". Ora prova a fare lo stesso con i collegamenti simbolici.
Li Lo,

1
@Li Lo: ho capito la differenza tra synlink e / usr / local / bin, ma la mia domanda (che forse è un po 'fuori tema con la domanda generale) è: a cosa serve exaclty / usr / local / bin?
Strae,
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.