Come risolvere il Terminale che non carica ~ / .bashrc su OS X Lion [chiuso]


176

Ogni volta che apro una nuova scheda in Terminale usando Cmd+ T, si apre bash nella stessa directory, come la scheda precedente. Funziona bene quando sono nella ~directory, ma se sono altrove, viene visualizzato un errore durante il caricamento.bashrc

Last login: Sat Oct 15 21:10:00 on ttys002
-bash: .bashrc: No such file or directory
Jakub-Arnolds-MacBook-Pro:projects darth$ 

Sembra che .bashrcsia caricato tramite percorso relativo e non assoluto, perché se lo faccio source ~/.bashrc, tutto funziona senza intoppi.

bashrc caricato

Penso che questo sia un problema relativo a OS X Lion, perché prima dell'aggiornamento da Snow Leopard non avevo lo stesso problema. Ma ciò potrebbe essere causato dal fatto che Terminal si apre sempre su ~, non ricordo se ha provato ad aprire la stessa directory.

Tuttavia, la domanda rimane la stessa, come posso caricare il terminale ~/.bashrctramite un percorso assoluto e non relativo?


1
questa domanda dovrebbe essere spostata su apple.SE (se possibile?), non chiusa.
Sparr,

@Sparr Sono totalmente d'accordo con te, ma i moderatori stanno spostando solo domande più recenti, non più vecchie. Vedi la discussione qui
рüффп,

Risposte:


357

Il terminale apre una shell di login. Questo significa che ~/.bash_profileverrà eseguito, ~/.bashrcno.

La soluzione sulla maggior parte dei sistemi è "richiedere" ~/.bashrcil ~/.bash_profile: basta inserire questo frammento nel tuo ~/.bash_profile:

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

8
Qualcuno potrebbe spiegare cosa [[ -s /file/path ]]sta facendo? Cercare una spiegazione su Google non è troppo facile.
Shane,

18
Da man bash: -s file Vero se il file esiste e ha una dimensione maggiore di zero.
ckruse

1
"Il terminale apre una shell di login" - quali sono gli altri tipi di shell os? Dove posso trovare più documentazione a riguardo?
dknight

4
Esistono le cosiddette "shell interattive" e "shell di login". Il tuo manuale di Bash ( man bash) ne parla e lo spiega, capitolo INVOCAZIONE (basta cercare INVOCATIONdopo aver chiamato man bashdigitando /INVOCATION)
ckruse

3
Non riesco a vedere come una domanda relativa a una situazione di esecuzione del codice, risolta da una riga di codice, sia "off topic" in un sito di domande di programmazione.
Kheldar,

26

Anche la ridenominazione .bashrcin .profile(o il collegamento soft del secondo al primo) dovrebbe fare il trucco. Vedi qui .


Oppure potresti simbolizzarli: cd && ln -s ./.bashrc ./.profileNota che i collegamenti simbolici sono sensibili riguardo al percorso del file, credo che l'uso della sintassi sopra funzioni, ma per essere sicuro di poter usare percorsi assoluti in ogni caso.
Steve Benner,

1
No? Questi file hanno scopi diversi. Se hai la sintassi di Bash .profile, verrai interrotto regolarmente sh.
Tripleee

14

Ho il seguente nel mio ~/.bash_profile:

if [ -f ~/.bashrc ]; then . ~/.bashrc; fi

Se avessi .bashrcinvece ~/.bashrc, vedrei lo stesso sintomo che stai vedendo.

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.