.bashrc non fornito in iTerm + Mac OS X.


62

Sto usando iTerm in Mac OS X 10.6. Sembra che quando apro iTerm, .bashrc.bash_profileè né di provenienza. Posso dirlo perché gli alias definiti in .bashrcnon sono impostati. Come risolvere?


2
Quello che sta succedendo è che prima ~/.bash_profileviene invocato da bash, che sta cortocircuitando le istruzioni che hai ~/.bashrc. Questo problema può verificarsi inaspettatamente se un programma canaglia aggiunge alcune istruzioni al tuo ~/.bash_profilequando in precedenza il file non esisteva e hai inserito tutti i tuoi comandi bash ~/.bashrc. La soluzione è di eliminare il tuo ~ / .bash_profile o di avere ~ / .bash_profile come sorgente del tuo ~ / .bashrc. Questo può essere eseguito aggiungendo il comando: source ~/.bashrcalla fine del tuo ~/.bash_profilee riavviando il terminale.
Eric Leschinski,

Risposte:


53

Bash produrrà OGNI .bash_profile o .bashrc, a seconda di come viene chiamato. Se si tratta di una shell di accesso, Bash cerca ~ / .bash_profile, ~ / .bash_login o ~ / .profile, in quell'ordine, e trova il primo che trova (e solo quello). Se non è una shell di accesso ma è interattiva (come la maggior parte delle sessioni terminali), Bash genererà ~ / .bashrc.

Probabilmente, iTerm sta cercando ~ / .bashrc. Se è configurato per l'avvio come shell di accesso, cercherà ~ / .bash_profile. È quasi certamente un errore all'interno del file di configurazione piuttosto che la shell non lo sta approvando.

Vorrei mettere una riga all'inizio di ogni file. Nella parte superiore di ~ / .bash_profile:

export BASH_CONF="bash_profile"

E nella parte superiore di ~ / .bashrc:

export BASH_CONF="bashrc"

Quindi, apri un nuovo iTerm e digita

$ echo $BASH_CONF

Ciò dovrebbe confermare che il file è di provenienza e puoi esaminare la sintassi del file.


2
L'impostazione di una variabile di ambiente diversa per ciascun file di origine consente ulteriori informazioni, vale a dire, se viene fornito più di un file, lo saprai, quasi solo l'ultimo (se non l'ordine proveniente.)
kmarsh

Questo non carica ancora il file .bashrc. Ho dovuto aggiungere source ~ / .bashrc alle mie preferenze iTerm e Terminal. a proposito sto usando Mac OS X 10.9.5.
Giant Elk,

Ho appena aggiunto un file .profile che funziona automaticamente su OS X 10.9.5 senza interferire con le preferenze del tuo terminale.
Giant Elk,

1
Ho scoperto che è una shell di accesso andando in preferenze -> profili -> generale e la shell di accesso è selezionata sotto comando. Valido per MacOS El Capitan e iTerm2 3.0.14
Aditya

La soluzione qui non ha funzionato per me, ma ho trovato una soluzione. All'inizio non esistevano bashrc e bash_profile. La risposta qui propone di creare un bashrc. Invece di creare un file bashrc ho creato un bash_profile e ha funzionato. Ora ho bisogno di capire perché il bashrc non è stato eseguito e il bash_profile sì.
kalmanIsAGameChanger

68

In iTerm2, nessuna di queste soluzioni ha funzionato per me. Sono stato in grado di farlo leggere correttamente il mio file .bashrc aggiungendo il comando

source ~/.bashrc 

nel campo Invia testo all'inizio: in Impostazioni / Generale per il mio profilo iTerm.

inserisci qui la descrizione dell'immagine


Che cosa è successo quando hai fatto ciò che la risposta accettata suggerisce? Nessuna uscita?
Daniel Beck

Giusto. Non ho ricevuto output e iTerm 2 ha appena caricato la shell bash predefinita senza nessuno dei miei alias.
Mark Struzinski,

Quella risposta è stata interrotta fino ad ora - il secondo frammento doveva entrare ~/.bashrc. Modificato
Daniel Beck

Uso ZSH e ho riscontrato lo stesso problema. Solo che nessuno dei miei file di configurazione esisteva in primo luogo e doveva essere creato. Ho usato questa risposta e impostato "Invia testo all'avvio", tuttavia, quando ho riavviato ZSH ha creato il suo .zsh e ho sovrascritto il mio file, sono stato in grado di rimuovere "Invia testo all'avvio" e aggiungere le mie configurazioni al file appena generato. Non sono sicuro se questo aiuta qualcuno
Arnolio l'

Ho pensato che questo fosse il mio problema .. e poi, lungo la strada, ho capito che il mio catalogo di casa non era la cartella in cui avevo iniziato .. così mentre spostavo il mio .bash_profile in un'altra posizione e pensavo di essere ln -s (link simbolico ad esso dal mio catalogo ~ (home), in effetti stavo aggiungendo un link simbolico nella cartella sbagliata, aggiungendolo qui nel caso in cui fosse d'aiuto a qualcun altro, che cercava questa risposta.
Alisso,

23

Mi chiedo solo che usi davvero Bash? Magari puoi usare echo $SHELL, è possibile che tu stia usando zsh , hai installato su-my-zh ?

Di solito incontro lo stesso problema, lo risolvo configurando ~ / .zshrc invece ~ / .bash_profile per la shell di accesso o ~ / .bashrc per la shell non di accesso.

Forse puoi provare


1
Suggerimento interessante, sebbene questa domanda abbia 3 anni e abbia una risposta accettata.
Tyson,

12

Sulla mia macchina 10.6 ~/.profileè di provenienza. Quindi una source .bashrcvoce in ~/.profiledovrebbe fare il lavoro.


Ha funzionato per me su Mac OS El Capitan.
user674669,

La mia esperienza dice che non vuoi estrarre un file .bashx da un altro, sono separati per un motivo :) Se lo stai facendo, allora qualcosa non va
Alexander Mills,

@AlexanderMills Il motivo per cui esistono questi file è perché Mac li ha strappati direttamente da Unix. Non c'è motivo per cui non tutti dovrebbero essere caricati per un utente.
RaisinBranCrunch

puoi ricevere chiamate circolari se si caricano a vicenda, è il problema, il modo migliore per evitare quello è quello di capovolgere un booleano con un var env e caricare gli altri file solo se il booleano non è impostato.
Alexander Mills

8

Soluzione semplice.

1. Apri il tuo ~/.zshrcfile

2. Aggiungere la seguente riga alla fine del file.

source ~/.bash_profile

1
Brillante! Che ha fatto per me. Non mi è mai venuto in mente che zsh si stava mettendo in mezzo dopo aver installato Oh-my-zh.
Cindy Conway,

6

Sulla mia macchina 10.9 ~ / .bash_profile è di provenienza. Quindi una voce sorgente .bashrc in ~ / .bash_profile dovrebbe fare il lavoro.


1

Inserisci le tue definizioni di alias nel file del profilo bash, devi creare il file ma verrà acquisito automaticamente. Creo un file separato chiamato alias.configuration e lo sorgente in .bash_profile solo perché ho un altro utente definito e voglio avere lo stesso alias impostato.


1
In realtà non .bashrcne .bash_profilevengono interpretati.
Computista il

1

Inserisci

set -x

all'inizio di /etc/profile. Questo vi dà un resoconto line-by-line di tutto ciò che viene eseguito quando bashsi avvia, inclusi i file provenienti dal di dentro /etc/profile, ~/.bash_profileecc E 'un po' scoraggiante se non si capisce bashdi scripting molto bene, ma si può essere in grado di vedere se c'è un errore in un file di avvio e l'output sarà utile per qualcuno competente bashper aiutarti a individuare il tuo problema.

È possibile rimuovere la set -xlinea al termine della risoluzione dei problemi.


1

Su 10.10 e iTerm2 2.0, profilo personalizzato

  • .bash_rc dovrebbe funzionare.
  • .bash_profile, prova "/ bin / bash --login" invece di "/ bin / bash"

Ho votato a favore di questa risposta perché sembra essere l'unico a riconoscere che in OS X, ad un certo punto, bash avrebbe generato ".bash_rc" anziché ".bashrc". Sono venuto qui solo perché stavo cercando di scoprire perché (e ancora non lo so).
Marnix A. van Ammers,

0

In iTerm2, assicurati di utilizzare "login shell" anziché un comando personalizzato incluso "login", che non fa ciò che ti aspetti.


Cosa fa effettivamente il comando iTerm2?
Studgeek

0

Apporta la seguente modifica e iTerm eseguirà il sorgente bashrc

iTerm> Preferenze> Generali> [x] Comando: / bin / bash


0

Il problema può essere risolto aggiungendo la riga sotto in / etc / bashrc

[-r "$ HOME / .bashrc"] &&. "$ HOME / .bashrc"


-1

Ho unito le soluzioni di coppia per lavorare come previsto.

.bash_profile sorgente ed esecuzione su zsh.

Preferences -> Profiles -> General .

Seleziona Comando sotto Comando.
E aggiungi nella casella di testo /bin/bash --login.

Quindi in .bash_profile aggiungi riga /bin/zsh --login

Questo è tutto.


(1) Cosa? (2) Se hai bashsempre corso zsh, non è quello che nessuno si aspetta.
Scott

Se imposto / bin / bash --login, non fornisce alcuna funzionalità di zsh. Quindi se lo cambio in loginshell preferibilmente, non legge .bash_profile. Ogni volta che devo correre source ~/.bash_profilemanualmente. @Scott Dopo aver fatto quanto sopra, ho zsh nel modo richiesto.
muhammed basil

(1) Il mio punto è che zshpotrebbe essere quello che desideri , ma non è richiesto o richiesto da questa domanda, che è taggata [bash] e non dice nulla zsh. (2) Se definite alias e funzioni di shell e impostate variabili (senza esportarle) nella vostra .bashrce / o .bash_profile, sono disponibili nella vostra zshshell?
Scott,
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.