.bashrc non fornito in iTerm + Mac OS X.


62

Sto usando iTerm in Mac OS X 10.6. Sembra che quando apro iTerm, .bashrcné .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.