MinGW Bash-Profil

37

Ich verwende MinGW unter Windows 7. Ich habe einen .bashrcmit einigen Aliasen darin. Die Datei befindet sich in meinem Home-Ordner, in dem MinGW mich startet. Daher wird davon ausgegangen, dass es sich bei dem Ordner um meinen Home-Ordner handelt. Der Inhalt des Ordners wird nicht automatisch geladen. Ich muss den bashBefehl ausführen , damit die Aliase funktionieren.

Ich habe versucht, es in umzubenennen .bash_profile. Dies machte die Sache nur noch schlimmer, da es nicht automatisch geladen wurde und auch nicht, wenn ich bashmanuell lief .

Wie kann ich dieses Problem beheben?

KurToMe
quelle
Entschuldigung, der Pfad hätte lauten müssen: C: \ MinGW \ msys \ 1.0 \ home \ Your_Username_Here \ .profile

Antworten:

48

bashwird wahrscheinlich als Login-Shell gestartet. In diesem Fall wird die Shell nicht .bashrcautomatisch gelesen . Stattdessen liest es .bash_profile. Aus dem Bash-Handbuch :

Normalerweise enthält Ihr ~ / .bash_profile die Zeile

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

nach (oder vor) Login-spezifischen Initialisierungen.

Erstellen Sie also zusammenfassend eine .bash_profileDatei in Ihrem Homedir und fügen Sie die oben angegebene Zeile hinzu.

Wenn Sie bashtatsächlich als aufgerufen werden sh, müssen Sie .profilestatt verwenden .bash_profile(siehe den Abschnitt "Mit Namen sh aufgerufen " im Bash-Handbuch-Link oben).

jjlin
quelle
1
Danke für die Idee, hat aber nicht funktioniert. Wie ich in der Frage bereits sagte, funktioniert das Einfügen der Alias-Befehle in .bash_profile überhaupt nicht. Es sieht also so aus, als würde das nicht gelesen.
KurToMe
5
Dies brachte mich auf die Idee, genau das zu tun, was Sie gesagt haben, außer es stattdessen in die .profile-Datei zu schreiben. Aus irgendeinem Grund hat das funktioniert (vielleicht verwendet MinGW nicht standardmäßig Bash oder etwas Verrücktes). Wenn Sie diese Option zu Ihrer Antwort hinzufügen, werde ich sie als akzeptiert markieren.
KurToMe
1
Ah, es gab einen Tippfehler in meiner Frage, den ich behoben habe, ich habe ihn .bash_rcin der Frage genannt, aber ich meinte .bash_profile.
KurToMe
etwas knapper:[ -f ~/.bashrc ] && . ~/.bashrc
Rich Homolka
1
@KurToMe Ich habe bearbeitet, um Ihre Situation abzudecken.
JJLIN
8

Ich verwende Windows XP und hatte das gleiche Problem. Ich habe HOWTO Create a MSYS Build Environment gefunden .

Dies ist die wichtige Zeile:

Um die Laufzeiterstellung und das aktuelle Arbeitsverzeichnis leichter identifizieren zu können, kann der ~/.profileDatei Folgendes hinzugefügt werden.

In der MinGW-Shell habe ich Folgendes erstellt .profile:

cd ~
touch .profile

Ich habe es mit Notepad ++ als Textdatei im Unix-Format bearbeitet .profileund in meinem Home-Verzeichnis gespeichert.C:\MinGW\msys\1.0\home\Your_Username_Here\.profile

Dann habe ich meinen Alias ​​hinzugefügt und gespeichert:

alias n='nano -w'

Dann habe ich die MinGW-Shell- Verknüpfung von meinem Startmenü aus gestartet und es hat funktioniert! Nano ohne Textumbruch.

Ich hoffe das hilft dir.

Bryan
quelle
Was Sie sagen, ist nicht lebendig ... ~ bedeutet das Ausgangsverzeichnis des Benutzers ... dann Ihre Angabe c: \ MinGW \ msys \ 1.0 \ home ... die keinen Sinn ergibt, auf die die Tilde verweist die USERS zu Hause ... auf Windows, die% userprofile% ...
Eddie B
2

Ich habe das .bash_profile nicht für mich gefunden (es wurde nicht gelesen), also habe ich den .profile-Ansatz gewählt und es eingefügt:

exec bash

Dies ersetzt meine aktuelle Shell durch einen Neustart der Bash, die meine .bashrc liest

Ich denke, dass die Verwendung eines .profile nahelegt, dass sh bei der Anmeldung verwendet wird, nicht bei der Bash.

Paul Munsey
quelle
1

Bei mir für MINGW mit GIT installiert, funktionierte: .bash_profile put in C:\Users\[user_name]

Dies ist auch das Verzeichnis, in dem ~ auf in shell (pwd) verweist.

Genau so :)

Koshmaar
quelle
0

Nach dem Vorbild von @Koshmarr, aber etwas anders. Meine mingw64, von git-scm.com heruntergeladen , würde /c/Users/[user-name]beim Start geladen. Trotzdem war meine Heimfahrt (gefunden von cd ~) in /h/. Ich habe ein .bashrcund .bash_profilein mein ~Laufwerk und alles hat funktioniert.

In .bash_profile:

    source ~/.bashrc;

Finden Sie heraus, wo MINGW zu Hause ist und stellen Sie das .bash_profiledort ab.

Bryan
quelle
0

So richten Sie MSYS Bash-Initialisierungsdateien ein

Unter Windows unterscheidet sich die Art und Weise, wie Sie auf die von Bash verwendeten Initialisierungsdateien verweisen (z. B. profile, bash_profile, bashrc), von der unter Linux.

Der Unterschied zwischen dem Windows- und dem Linux-Betriebssystem besteht in der Dateisystemstruktur, die zu Unterschieden bei den Speicherorten von Bash-Dateien und den Dateinamenskonventionen führt.

Einrichten von MSYS Bash-Initialisierungsdateien (z. B. profile, bash_profile und bashrc)

1) Öffnen Sie in WINOS den Ordner 'etc', der sich hier befindet: 'C: \ msys \ 1.0 \ etc \'. Hinweis. Sie sollten eine Datei 'profile' im Ordner 'etc' sehen.

2) Speichern Sie eine Datei ohne Dateierweiterung (dh wenn Sie speichern, setzen Sie den Dateityp auf '.all files') mit dem Dateinamen '.bash_profile' auf 'C: \ msys \ 1.0 \ home \ USERNAME'. Hinweis. Es gibt einen Punkt als Präfix für den Dateinamen (z. B. '.bash_profile'), wie Sie es bei der Installation von Linux OS Bash erwarten würden

2) Speichern Sie eine Datei ohne Dateierweiterung (dh wenn Sie speichern, setzen Sie den Dateityp auf '.all files') mit dem Dateinamen '.bashrc' auf 'C: \ msys \ 1.0 \ home \ USERNAME'. Hinweis. Es gibt einen Punkt als Präfix für den Dateinamen (z. B. '.bash_profile'), wie Sie es bei der Installation von Linux OS Bash erwarten würden

4) Öffnen Sie die 'Profil'-Datei in einem Texteditor (erhabener Text x ist gut). Hinweis: Der Dateispeicherort von' Profil 'ist' C: \ msys \ 1.0 \ etc \ '.

Scrollen Sie in der 'profile'-Datei zu der Textzeile am Ende der Datei (dh scrollen Sie nach unten). In dieser Zeile sollte ein Test angezeigt werden, der angibt, dass Bash das aktuelle Verzeichnis in HOME ändert (In MSYS ist HOME wie in definiert) Profildatei)

CD $HOME

5) Kopieren Sie vor der Zeile mit dem Text 'CD $ HOME' den folgenden Code. Durch Hinzufügen dieses Skripts in 'profile' wird MSYS bash angewiesen, das bash_profile # auszuführen. ---------------- -------------------------------------------------- --------- #modified BEGIN

# 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) Öffnen Sie die Datei 'bash_profile' in einem Texteditor ( Sublime Text x ist gut) und das Ende der Datei (am Ende der Datei).

7) Kopieren Sie den folgenden Code am Ende der Datei. Wenn Sie dieses Skript in ".bash_profile" einfügen, wird Bash angewiesen, ".bashrc" auszuführen.

#---------------------------------------------------------------------------
#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, jetzt schreiben wir ein kleines Skript in '.bashrc', um zu sehen, ob 'profile' 'bash_profile' aufruft und ob 'bash_profile' '.bashrc' aufruft.

8.1) Überlegen Sie sich einen Befehlsnamen, den Sie erstellen möchten. Verwenden wir 't' als Test

8.2) Öffnen Sie das Bash-Terminal und geben Sie 't' ein. Bash sollte antworten 't: Befehl nicht gefunden' - wenn es nicht 't: Befehl nicht gefunden' sagt, dann wiederholen Sie 8.1 und 8.2, bis Ihr Befehlsname 'Befehl nicht gefunden' sagt. Sie möchten keinen Aliasnamen für einen Befehl vergeben, der BAD! Zugewiesen wurde. Es muss sich also um "Befehl nicht gefunden" handeln.

8.3) OK, 't' gab mir einen 't: Befehl nicht gefunden'. Nun schreiben wir das Skript in '.bashrc'

8.4) In '.bashrc' schreiben

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

8.5) Speichern Sie die Datei '.bashrc' in 'C: \ msys \ 1.0 \ home \ USERNAME'

9) Fast da. Starten Sie nun das Bash-Terminal neu und schließen Sie alle zuvor geöffneten Bash-Terminals

10) Geben Sie das Terminal 't' ein. Es sollte "Test bestanden" antworten. Wenn nicht, überprüfen Sie sorgfältig, ob der Code korrekt geschrieben wurde (überprüfen Sie zuerst die Anführungszeichen).

Einige Anmerkungen 1) 'Quellendateiname' ist dasselbe wie '. Dateiname'

2) "" doppelte Anführungszeichen ermöglichen das Ersetzen von Variablen durch den Inhalt, einfache Anführungszeichen nicht

3) $ HOME ist / home / USERNAME wie ~ ist / home / USERNAME

4) Eine Funktion wird immer Alias 2 vorgezogen

Weitere Einzelheiten finden Sie in der BASH-Referenz

Ich bin neu bei Bash. Es gibt also keine Garantie, dass ich das bestmöglich gemacht habe.

Viel Glück!

Atom
quelle