Mac OS X .bashrc non funziona


74

Ho un .bashrcfile di una riga nella mia directory home:

alias countlines='find . -type f -print0 | xargs -0 cat | wc -l'

Ma non sta creando l'alias. Perché potrebbe essere?

Risposte:


94

In OSX, .bash_profileviene utilizzato al posto di .bashrc.

E sì, il .bash_profilefile dovrebbe trovarsi in /Users/YourName/
(In altre parole, ~/.bash_profile)

Per esempio, /Users/Aaron/.bash_profile


11
Questa non è la risposta giusta. Gli alias non vengono ereditati, quindi, se li definisci solo in .bash_profile, non saranno definiti nelle shell non di login (ad es. Quando esegui bash dentro bash).
LaC,

1
Oppure si può usare bash_aliases che ha lo stesso effetto di mettere gli alias in bashrc, ma più gestibile: ss64.com/osx/syntax-bashrc.html
Atul Ingle

4
nel mio .bash_profile ho appena scritto una riga per alias (sorta di) bashrc ->source ~/.bashrc
Eric Hodonsky,

84

.[bash_]profilee .bashrcpuò essere utilizzato su OS X e Linux. Il primo viene caricato quando la shell è una shell di login; quest'ultimo quando non lo è. La vera differenza è che Linux esegue una shell di accesso quando l'utente accede a una sessione grafica e quindi, quando si apre un'applicazione terminale, quelle shell sono shell non di accesso; mentre OS X non esegue una shell all'accesso grafico e quando si esegue una shell da Terminal.app, questa è una shell di accesso.

Se vuoi che i tuoi alias funzionino nelle shell di login e non login (e di solito lo fai), dovresti metterli in .bashrc e source .bashrc nel tuo .bash_profile, con una linea come questa:

[ -r ~/.bashrc ] && source ~/.bashrc

Questo vale per qualsiasi sistema che utilizza bash.


15
+1 con l'avvertenza che tutto in .bashrc verrà eseguito di nuovo per i sub-shell (e subsub-, subsubsub-, ecc.), Quindi ad esempio PATH=$PATH:/my/private/binariesporterà a PATH bloat. Vedi questo per una soluzione alternativa.
Gordon Davisson,

2
Vero. Poiché le variabili di istanza esportate vengono ereditate, le ho semplicemente impostate .profileanziché .bashrc.
LaC,

1
@LaC puoi spiegare _Dal momento che le variabili di istanza esportate sono ereditate, le ho appena impostate in .profile_...?
sam

1
@sam, non so da dove provenga "istanza". Intendevo solo "variabili esportate". Purtroppo non posso modificare quel commento.
LaC,

2
@dinosaur: "-r" controlla se il file è leggibile.
mhvelplund,

7

Oppure crea un link sym chiamato .bash_profile puntato sul tuo .bashrc

ln -s .bashrc .bash_profile

2

Non è alias perché .bash_profileviene utilizzato anziché .bashrcsu Mac OS X.

Quindi hai due opzioni:

  • Inserisci l'alias nel tuo ~/.bash_profile

  • O .bashrcdai il tuo dal tuo .bash_profileaggiungendo questa riga al .bash_profile:

    . ~/.bashrc


1

Su Mac OS X Yosemite , esegui il seguente comando:

vi ~/.profile

Quindi aggiungere la seguente riga:

source ~/.bashrc

Ora salva e chiudi .profile, quindi apri una nuova finestra Terminale o esegui semplicemente:

source ~/.profile

Vedi anche questa risposta . Ha funzionato su v10.10.3.


Questo è poco più che un ripasso delle risposte di quattro anni fa.
G-Man,

Certo, solo un facile da leggere e applicarlo. Inoltre un piccolo contributo - poiché gli altri file citati non erano disponibili sul mio sistema operativo Yosemite.
Ricardo,
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.