Come definire in modo persistente gli alias in Terminale


18

Voglio aggiungere alias al mio ambiente in modo che siano disponibili in tutte le istanze di Terminal.

Ho questa risposta :

Sì, puoi inserirlo nel tuo .bashrc, .bash_profile o .profile. Su alcuni sistemi, gli script di shell shell generano anche .bash_aliases o .aliases, quindi se uno di quei file esiste sul tuo sistema può avere senso usarli.

Ma non riesco a trovare nessuno di questi file.

(Ho configurato OS X per vedere i file nascosti, eppure non vedo nessuno dei precedenti 4.)


Gli alias funzionano solo nella shell (nel Terminale), quindi cosa intendi esattamente con l'aggiunta di alias al tuo ambiente OS X? Vuoi rendere un alias accessibile a tutti gli utenti?
Nohillside

Volevo dire che sarà impostato per ogni istanza terminale che aprirò in futuro
Elad Benda,

Ho ripristinato la tua modifica perché ha cambiato il focus della domanda. Se stai ancora cercando una risposta su come aggiungere alias a zsh, fai una nuova domanda.
Nohillside

Risposte:


23

Se usi bash, aggiungi i comandi alias a ~ / .bashrc e salva un file come questo come ~ / .bash_profile:

. ~/.bashrc

Quando bash viene invocato come shell interattiva non di accesso, legge .bashrc ma non .bash_profile. Quando bash è invocato come shell di login interattiva, legge .bash_profile ma non .bashrc.

Terminal e iTerm aprono nuove shell come shell di accesso per impostazione predefinita, quindi molti utenti di OS X usano semplicemente .bash_profile come file di configurazione personale. Ad esempio, tmux e la modalità shell in Emacs aprono comunque nuove shell come shell non di login.

Il file .profile viene letto anche da altre shell come ksh. Se esistono sia .bash_profile che .profile, bash legge .bash_profile solo quando viene invocato come shell di login interattiva.

Vedi https://www.gnu.org/software/bash/manual/html_node/Bash-Startup-Files.html per ulteriori informazioni.


3
@EladBenda Se si utilizza zsh, aggiungere i comandi alias a ~/.zshrc. ~/.zshrcviene letto da entrambe le shell (interattive) non login e login, quindi non è necessario originarlo ~/.zprofile.
Lri,

Ho sempre voluto sapere la differenza tra .bash_profile e .bashrc, ora lo so. Grazie.
Deesbek,

Un'opzione migliore è mantenere gli alias in un file chiamato ~ / .aliases se si utilizza oh-my-zsh. Se questo file non esiste, può essere aggiunto nella cartella home e sarebbe un file nascosto.
Anusha,

6

Apri una nuova finestra Terminale e vai alla tua home directory (basta digitare cde premere Invio).

Dopodiché, digita ls .bash*e anche ls .profile(nota che ciascuno di quei nomi di file inizia con un punto). Se hai quei file (e dovresti avere almeno quello .profile) allora devi modificarli e aggiungere i tuoi alias ad essi. Uso VI (o VIM) per modificare quei file, ma potresti usare un altro editor (infatti digitando nella finestra Terminale open .bash_profilelo aprirai in TextEditor, che potrebbe essere un po 'più user-friendly se non hai familiarità con VI) . Se, per qualche motivo, non hai nessuno di quei file, quindi creane uno nuovo (e chiamalo .bashrc), aggiungi le tue linee alias (quindi questo sarà un comando per riga, come li digiteresti nella shell) e quindi salvare il file. È quindi possibile creare collegamenti simbolici a .bash_profile e .profile utilizzando ln -s .bashrc .bash_profile; ln -s .bashrc .profile.

Quello che faccio di solito è creare collegamenti simbolici .bashrc e .bash_profile a .profile e quindi devo solo preoccuparmi di un solo file.

La differenza tra questi file è che bash ne genererà di diversi a seconda che sia stato avviato come shell di login (in genere un processo di login avvia la shell come shell di login) o solo come shell interattiva (ma non login), oppure una shell non interattiva. Avere tutti e tre i file essenzialmente uguali mi dà un ambiente coerente indipendentemente da come è stato avviato Bash.

Otterrai maggiori informazioni facendo man bash, ma preparati, è una lunga pagina man. Sarai in grado di vedere quale dei tre file (.bashrc, .profile e .bash_profile) provengono da quale modalità è stata avviata bash.

Spero che ti aiuti - se no, dammi un grido.


3

Immettere i seguenti comandi nel Terminale:

cd /etc
sudo vi bashrc

aggiungi il seguente like:

alias ll="ls -lrt"

Infine riavviare Terminal.


2

Se hai bisogno di questa macchina ampia devi cercare nella /etccartella. Tuttavia, potrebbero non esistere per impostazione predefinita, nel qual caso è sufficiente crearli nella cartella sopra e riavviare il terminale. Molto probabilmente dovrai usarli sudoper crearli poiché la /etccartella appartiene root.

Se hai bisogno di questo per ogni terminale che apri, non è necessario farlo a livello di macchina. È possibile creare questi file nella propria cartella home e verranno letti dal terminale ogni volta che si avvia una sessione del terminale.

Inoltre, come menzionato nei commenti, in genere sarà possibile vederli solo tramite terminale e utilizzo ls -lha.


0

se hai installato ruby, dai un'occhiata a questo script ruby https://github.com/ytbryan/aka

Lo script fornisce funzionalità come persistenza e auto-sourcing del file dot. È possibile gestire gli alias tramite terminale senza interrompere il flusso di lavoro e aprire un editor di testo.

disclaimer: ho scritto questo script e lo uso ogni giorno. Fammi sapere se c'è qualche bug / idea. :)


0

Per quelli di voi che cercano il comando ll come in Linux BASH, è creato in questo modo ...

alias ll="ls -laF"

Aggiungi quella riga al tuo .bashrcfile, quindi duplica il .bashrcfile come .bash_profilee avrai sempre e per sempre.

Per quello che vale, su Linux BASH è solo un alias di " ls -laF".


-2

ho avuto lo stesso problema, che non avevo .bash o .profile nella posizione dei miei profili. l'ho finalmente trovato in / etc


1
/ etc viene utilizzato a livello di sistema. Consiglio vivamente di non modificare questi file, ma di utilizzare invece i propri file di profilo nella cartella principale, ad esempio ~ / .bash_profile.
grg

non ho la certezza di avere un ~ / .bash_profile, è stata la prima cosa che ho provato e se ne creo uno, non viene utilizzato nemmeno dopo un riavvio, credo che i miei amministratori debbano averlo impedito in qualche modo. ora sto usando zsh e .zshrc funziona bene
Leo Boulanger,
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.