Cosa fa . .bashrc lo fa davvero?


13

Quando entro a es. un nuovo alias nel mio .bashrcfile non posso usarlo immediatamente nella finestra del terminale e fino a poco tempo fa pensavo di dover riavviare il terminale per ricaricare il .bashrcfile. Poi ho scoperto da qualche parte che se scrivo

. .bashrc

questo ricaricherà il .bashrcfile nella finestra corrente e non devo riavviare. Funziona con le pinne ma cosa sta realmente accadendo? Perché questo ricarica il .bashrcfile?


1
Con ., "fonte" il file. Significa che viene eseguito sostanzialmente
Der Hochstapler

possibile duplicato di Cosa fa la fonte?
Dan D.

1
@DanD. mentre la risposta è la stessa, la domanda mi sembra abbastanza distinta.
Calimo

1
@Dan D. questa domanda è più sulla mening di . . Fino ad ora ci ho sempre pensato . come scorciatoia per la directory corrente e .. come scorciatoia per la directory padre. Non me ne sono mai reso conto . era un alias per la fonte (che a sua volta era un concetto completamente nuovo per me). Se qualcuno viene qui e vuole sapere la differenza che ho trovato Qual è la differenza tra l'esecuzione di uno script bash e l'approvvigionamento di uno script bash? per essere molto utile.
Spade,

Risposte:


17

Perché .è un comando.

È un comando incorporato della shell, che legge il file indicato ed esegue i comandi in esso contenuti nel processo di shell corrente.

La shell Bourne Again ha anche sourcecome sinonimo di questo comando. Ma questo è un Bashismo (che il guscio di Bourne Again prese dalla C Shell). Anche se è un bashismo che la shell Bourne Again condivide con la shell TENEX C, la shell Z e altre (ma non la shell Korn, nota). Le specifiche UNIX singole sono solo standardizzate ..

Si noti inoltre che il comportamento di ./ sourcecambia in modo sottile a seconda che la shell Bourne Again venga eseguita o meno nella sua modalità compatibile con POSIX. (Anche in questo caso è come le altre shell, anche se i loro comportamenti non standard non sono uguali l'uno con l'altro. Con la Shell Z, ad esempio, esiste un meccanismo di script shell precompilato e sourcedifferisce leggermente dalla .gestione del percorso di ricerca. la shell .eseguirà le funzioni della shell, per un altro esempio.)

~/.bashrcè semplicemente uno dei numerosi file il cui contenuto è (dipende da come viene invocato il processo di shell) proveniente automaticamente all'avvio della shell. Non c'è nulla che gli impedisca di provenire manualmente . Sebbene se le sue azioni non sono idempotenti, potresti avere qualche lavoro di correzione da fare in seguito.

Ulteriori letture


1

help . ti direi:

.: . filename [arguments]

Execute commands from a file in the current shell.

Read and execute commands from FILENAME in the current shell.  The
entries in $PATH are used to find the directory containing FILENAME.
If any ARGUMENTS are supplied, they become the positional parameters
when FILENAME is executed.

Exit Status:
Returns the status of the last command executed in FILENAME; fails if
FILENAME cannot be read.

Dire . .bashrcesegue ( .bashrcgenera ) il file che rende disponibili le modifiche apportate al file nella sessione corrente.

Per impostazione predefinita, ~/.bashrcverrebbe letto all'accesso.

.è sinonimo di source.


1

Il .comando è uguale al sourcecomando, che esegue il tuo .bashrcfile. Questo aggiunge tutti gli alias che hai definito e tutte le altre impostazioni / variabili della shell nell'ambiente attuale. Dalla sourcepagina di aiuto:

source: source filename [arguments]
    Execute commands from a file in the current shell.
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.