GNU/Linux >> Linux Esercitazione >  >> Ubuntu

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

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

Sono un principiante 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 inserendo desired_alias = '/path/to/executable' nel ~/.bash_aliases

tutti hanno lo stesso effetto.

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

Risposta accettata:

Con il primo metodo non stai creando un alias, stai creando un collegamento simbolico. I collegamenti simbolici sono l'abbreviazione di 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
è il percorso di un altro file, il file
a cui si riferisce il collegamento. In altre
parole, un collegamento simbolico è un puntatore a
un altro nome e non a un oggetto
sottostante.

Leggi di più sui link simbolici qui e qui.

Solo con il secondo metodo stai, infatti, 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 annullare l'impostazione con i comandi integrati
alias e unalias
(vedere COMANDI INCORPORATI SHELL di seguito).
La prima parola di ogni comando simple
, se non tra virgolette, viene selezionata in
vedi se ha un alias. In tal caso, quella
parola viene sostituita dal testo dell'
alias.

Puoi definire un alias ovunque tu possa digitare un comando e avere la shell (bash in questo caso) interpretarlo, 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 menzionerò i file del profilo perché hanno uno scopo diverso.

Quindi, vuoi aggiungere i tuoi alias a ~/.bashrc per averli a disposizione in ogni shell interattiva.

Il .bash_aliases metodo realizza esattamente la stessa cosa che mettere gli alias in ~/.bashrc ma ha l'ulteriore vantaggio di essere più facile da analizzare e manipolare dai programmi.

Correlati:KDE 5.56 SDDM Risoluzione dello schermo di accesso sullo schermo FHD HiDPI?

Il . ~/.bash_aliases significa sorgente (carica) _~/.bash_aliases_ nel contesto della shell attualmente in esecuzione.


Ubuntu
  1. Linux:differenza tra /dev/console , /dev/tty e /dev/tty0?

  2. Linux – Unire /usr/bin e /usr/sbin in /bin (gnu/linux)?

  3. Differenza tra /var/log/messages, /var/log/syslog e /var/log/kern.log?

  4. Perché /bin/sh punta a /bin/dash e non a /bin/bash??

  5. Cosa c'è di diverso tra /bin/false e /sbin/nologin come shell dell'utente nologin

La differenza tra /opt e /usr/local?

Installa i binari in /bin, /sbin, /usr/bin e /usr/sbin, interazioni con --prefix e DESTDIR

Cambia directory ed esegui il file in un comando

Qual è la differenza tra #!/usr/bin/env bash e #!/usr/bin/bash?

cmake --version punta a /usr/bin/cmake mentre which cmake punta a /usr/local/bin

Spostato il contenuto di /bin in /usr/bin, è possibile annullare?