Profilo MinGW Bash


37

Uso MinGW su Windows 7. Ho un .bashrcalias con alcuni alias. Il file si trova nella mia cartella home, dove MinGW mi avvia, quindi crede anche che la cartella sia la mia cartella home. Non carica automaticamente il contenuto della cartella. Devo eseguire il bashcomando per far funzionare gli alias.

Ho provato a rinominarlo .bash_profile. Questo non ha fatto altro che peggiorare le cose in quanto non si caricava automaticamente e non si caricava anche quando correvo bashmanualmente.

Come posso risolvere questo problema?


Spiacenti, il percorso avrebbe dovuto essere: C: \ MinGW \ msys \ 1.0 \ home \ Your_Username_Here \ .profile

Risposte:


48

bashsta probabilmente iniziando come shell di login, nel qual caso non legge .bashrcautomaticamente. Invece, si legge .bash_profile. Dal manuale di Bash :

Quindi, in genere, il tuo `~ / .bash_profile 'contiene la linea

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

dopo (o prima) qualsiasi inizializzazione specifica per l'accesso.

Quindi, in sintesi, crea un .bash_profilefile nel tuo homedir e aggiungi la riga sopra citata.

Se stai basheffettivamente invocando come sh, allora dovrai usare .profileinvece di .bash_profile(vedi la sezione "Invocato con il nome sh" del link manuale di Bash sopra).


1
Grazie per l'idea, non ha funzionato però. Come ho detto nella domanda, inserire i comandi alias in .bash_profile non funziona affatto, quindi sembra che non venga letto.
KurToMe,

5
Questo mi ha dato l'idea di fare esattamente quello che hai detto, tranne quello di inserirlo nel file .profile. Per qualche ragione ha funzionato (forse MinGW non usa Bash per impostazione predefinita o qualcosa di folle). Se aggiungi questa opzione alla tua risposta, la contrassegnerò come accettata.
KurToMe,

1
Ah, c'era un refuso nella mia domanda che ho risolto, lo stavo chiamando .bash_rcnella domanda, ma intendevo .bash_profile.
KurToMe,

un po 'più conciso:[ -f ~/.bashrc ] && . ~/.bashrc
Rich Homolka il

1
@KurToMe Ho modificato per coprire la tua situazione.
jjlin,

8

Sto eseguendo Windows XP e ho avuto lo stesso problema. Ho trovato HOWTO Creare un ambiente di compilazione MSYS .

Questa è la linea importante:

Per identificare la build di runtime e la directory di lavoro corrente, è possibile aggiungere al ~/.profilefile quanto segue .

Nella shell MinGW, ho creato .profile:

cd ~
touch .profile

Ho usato Notepad ++ per modificarlo come file di testo in formato Unix chiamato .profilee salvato nella mia directory home,C:\MinGW\msys\1.0\home\Your_Username_Here\.profile

Quindi ho aggiunto il mio alias e salvato:

alias n='nano -w'

Quindi ho attivato il collegamento MinGW Shell dal mio menu di avvio e evviva, ha funzionato! nano senza avvolgimento di testo.

Spero che questo ti aiuta.


Quello che stai dicendo non è jive ... ~ indica la home directory degli utenti ... quindi la tua c: \ MinGW \ msys \ 1.0 \ home ... non ha alcun senso che la tilde sia un riferimento a gli UTENTI a casa ... su Windows che% userprofile% ...
Eddie B

2

Non ho trovato il file .bash_profile adatto a me (non veniva letto), quindi ho adottato l'approccio .profile e inserito al suo interno:

exec bash

Questo sostituisce la mia shell corrente con un nuovo inizio di bash, che legge il mio .bashrc

Sto pensando che l'uso di un .profile suggerisce che sh viene usato all'accesso, non bash.


1

Per me per MINGW installato con GIT, ha funzionato: messo .bash_profile C:\Users\[user_name]

Questa è anche la directory in cui ~ punta a nella shell (pwd).

Proprio così :)


0

Sulla falsariga di @Koshmarr, ma leggermente diverso. Il mio mingw64, scaricato da git-scm.com , si carica /c/Users/[user-name]all'avvio. Eppure il mio disco di casa (trovato da cd ~) era dentro /h/. Ho inserito un .bashrce .bash_profilenel mio ~disco e tutto ha funzionato.

In .bash_profile:

    source ~/.bashrc;

Basta capire dove MINGW considera casa e mettere .bash_profilelì.


0

Come impostare i file di inizializzazione di MSYS Bash

Nel sistema operativo Windows, il modo in cui si punta ai file di inizializzazione utilizzati da Bash (ovvero profilo, bash_profile, bashrc) è diverso rispetto al sistema operativo Linux.

La differenza tra il sistema operativo Windows e Linux è la loro struttura del file system, che porta alla differenza nella posizione dei file Bash e nelle convenzioni di denominazione dei file.

Come impostare i file di inizializzazione di MSYS Bash (ad es. Profilo, bash_profile e bashrc)

1) In WINOS, apri la cartella 'etc' che si trova qui 'C: \ msys \ 1.0 \ etc \'. Nota. dovresti vedere un file 'profilo' nella cartella 'etc'.

2) Salvare un file senza estensione di file (ovvero, quando si salva, impostare il salvataggio come tipo su '.all files') con il nome del file '.bash_profile' su 'C: \ msys \ 1.0 \ home \ USERNAME'. Nota. c'è un punto come prefisso per il nome del file (es. '.bash_profile') come ci si aspetterebbe dalla configurazione di Bash del sistema operativo Linux

2) Salvare un file senza estensione di file (ovvero, quando si salva, impostare il salvataggio come tipo su '.all files') con il nome del file '.bashrc' su 'C: \ msys \ 1.0 \ home \ USERNAME'. Nota. c'è un punto come prefisso per il nome del file (es. '.bash_profile') come ci si aspetterebbe dalla configurazione di Bash del sistema operativo Linux

4) Apri il file "profilo" in un editor di testo (il testo sublime x è buono) Nota: la posizione del file di "profilo" è "C: \ msys \ 1.0 \ etc \"

All'interno del file 'profilo', scorrere fino alla riga di testo alla fine del file (ovvero scorrere verso il basso) dovresti vedere una riga un test che indica a Bash di cambiare la sua directory corrente in HOME (in MSYS, HOME è come definito in file "profilo")

CD $HOME

5) Prima della riga con il testo 'CD $ HOME' copia il seguente codice: l'aggiunta di questo script in 'profilo' dirà a MSYS bash di eseguire il bash_profile # ---------------- -------------------------------------------------- --------- #modified INIZIA

# Note. -f is a flag in the file-test operator set of bash commands
#       that test whether file exists
echo '[i] INFO loading personal environment variables and startup   programs.... '
BASHRC="$HOME/.bash_profile"
if [ -f "$BASHRC" ]; then
  source "$BASHRC"
fi

#modified END
#---------------------------------------------------------------------------

6) Apri il file 'bash_profile' in un editor di testo ( Sublime Text x è buono) e la fine del file (in fondo al file)

7) Copia il seguente codice alla fine del file - aggiungendo questo script in '.bash_profile' dirai a Bash di eseguire il '.bashrc'

#---------------------------------------------------------------------------
#modified BEGIN

# Note. -f is a flag in the file-test operator set of bash commands
#       that test whether file exists
BASHRC="$HOME/.bashrc"
if [ -f "$BASHRC" ]; then
  source "$BASHRC"
fi

#modified END

# ------------------------------------------------- --------------------------

8) OK, ora scriviamo un piccolo script all'interno di '.bashrc' per vedere se 'profile' sta chiamando 'bash_profile' e se 'bash_profile' sta chiamando '.bashrc'.

8.1) Pensa al nome del comando che desideri creare. Usiamo 't' per indicare il test

8.2) Aprire il terminale Bash e digitare 't'. Bash dovrebbe rispondere 't: comando non trovato' - se non dice 't: comando non trovato', ripeti 8.1 e 8.2 fino a quando il nome del tuo comando dice 'comando non trovato'. Non si desidera alias un nome comando assegnato a bash BAD !, quindi deve essere 'comando non trovato'

8.3) OK, 't' mi ha dato un 't: comando non trovato'. Ora scriviamo lo script in '.bashrc'

8.4) In '.bashrc' scrivere

# Use double quotes or bash will not write it
alias t="echo passed test"

8.5) Salvare il file '.bashrc' in 'C: \ msys \ 1.0 \ home \ USERNAME'

9) Quasi lì. Ora riavvia il terminale Bash e assicurati di chiudere tutti i terminali Bash precedentemente aperti

10) Digitare il terminale 't'. Dovrebbe rispondere "test superato". In caso contrario, controlla attentamente che il codice sia stato scritto correttamente (inizia controllando le virgolette)

Alcune note 1) 'nome file sorgente' è uguale a '. nome del file'

2) "" le virgolette doppie consentono alle variabili di essere sostituite dal suo contenuto le virgolette singole no

3) $ HOME è / home / USERNAME uguale a ~ is / home / USERNAME

4) Una funzione è sempre preferita rispetto all'alias 2

Per maggiori dettagli vedi riferimento BASH

Sono nuovo di Bash. Quindi non c'è alcuna garanzia che l'ho fatto nel modo migliore.

In bocca al lupo!

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.