Come reinizializzare una finestra del terminale invece di chiuderla e avviarne una nuova?


49

Quando apporto alcune modifiche al comportamento shell / bash, come l'impostazione di un alias, c'è un comando rapido per reinizializzare la finestra del terminale invece di chiudere e aprire una nuova finestra?

Risposte:


51

Se intendi ricaricare la tua configurazione .bashrc, allora:

source ~/.bashrc

Per una digitazione minore, è possibile sostituire sourcecon un punto:. ~/.bashrc


2
Ecco una domanda, come si comporta diversamente source ~/.bashrc?
crasic

Non Guardando la pagina man di bash vedrai che i comandi sono elencati come equivalenti.
Carsten Thiel,

2
sourceè uno specifico per bash. .è più standard. Entrambi funzionano allo stesso modo in bash.
Michael Terry,

1
Questo ricarica solo il PATH e alcune variabili d'ambiente. Non "resetta" nulla. La risposta di @ NES è quella corretta.
Cerin,

2
Questo non ripristina nulla, se hai avuto aggiornamenti al tuo PERCORSO ora avrai i tuoi vecchi aggiornamenti e nuovi aggiornamenti.
Costantino,

39

Alcune aggiunte che ho trovato nella manpage dal comando reset / tset

tset reset inizializzazione terminale

comando: reset

Tset inizializza i terminali. Tset determina innanzitutto il tipo di terminale che si sta utilizzando. Questa determinazione viene eseguita come segue, utilizzando il primo tipo di terminale trovato.

un vantaggio sembra essere che è indipendente dalla shell usata. funziona anche con i pesci qui.

Quindi per reinizializzare qualsiasi terminale basta-

$ tset

O

$ reset

Sfortunatamente anche questo è sbagliato. Non ripristina le variabili di ambiente esistenti.
Isarandi,

9

Un'opzione aggiuntiva a exec bashè che se hai cambiato il tuo .profile(o .bash_profile), puoi farlo

$ exec bash --login

Anche questo leggerà di nuovo il tuo profilo. Non sarebbe male aggiungere anche l' -iopzione per dire esplicitamente a bash che questa è una shell interattiva, ma normalmente può capirlo da sola.


per me funziona anche senza esecutivo
Armen Sanoyan,

Sfortunatamente anche sbagliato. Le variabili d'ambiente già impostate sono ancora presenti e non ripristinate.
Isarandi,

6

Devi sostituire l'applicazione / shell in esecuzione con una nuova istanza. Ad esempio, se si utilizza bashcome shell preferita digitare la seguente riga nella riga di comando ( $ è il segnaposto per l'inizio della riga di comando):

> $ exec bash

L'applicazione / shell in esecuzione viene sostituita da una nuova istanza di bashlike che inizia da zero. Tutte le modifiche precedenti sono sparite.

Nota: non dimenticare che l'applicazione terminale potrebbe essere riprogrammata. È necessario ripristinare manualmente l'applicazione terminale.


2
Cosa intendi con "riprogrammato"?
Eliah Kagan,

0

la tua shell è un eseguibile che puoi chiamare. Quindi se stai usando bash puoi chiamare bashe se stai usando qualcos'altro come zsh puoi semplicemente entrarezsh


0

Usa exec sudo --login --user $USER.

Se si desidera che anche i comandi immessi in precedenza scompaiano (ripristino completo del terminale), combinarlo con resetasreset; exec sudo --login --user $USER

Esistono molte risposte sul Web, ma la maggior parte in realtà non funziona. Un modo semplice per testare è impostare, export SOMEVAR=42quindi eseguire il comando di ripristino presumibilmente e fare echo $SOMEVAR. Se è 42, l'ambiente non è stato ripristinato.

C'è anche exec -c bash -lo exec env -i bash -l, ma questi sono rotti, in qualche modo la variabile $ HOME non è impostata dopo questo.

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.