
Ich habe gesehenDasaber bei mir funktioniert es nicht. Ich verwende nicht die Bash-Version von Git, sondern die, die mit Cygwin geliefert wird, also könnte das ein Teil des Problems sein. So habe ich meinen Tab in Console2 eingerichtet:
Title: bash.exe
Shell: C:\cygwin\bin\bash.exe --login -i
Startup dir: %HOMEDRIVE%%HOMEPATH%
Dies ist mein Registrierungseintrag:
Directory
shell
Console2
Open Console2 Here
command
"C:\Console2\Console.exe" -d "%1"
Bash startet immer in meinem Home-Verzeichnis und nicht in dem Verzeichnis, auf das ich klicke, dann muss ich cd /cygdrive/d/code
... usw. Ich habe versucht, den Wert im Feld „Startverzeichnis“ zu entfernen und ihn in %1, %1% zu ändern, aber ohne Erfolg.
Ich habe auch versuchtdiese Lösungaber bei mir hat es auch nicht funktioniert:
Title: bash.exe
Shell: C:\cygwin\bin\bash.exe -l
Registrierung:
Directory
shell
Console2
Open Console2 Here
command
"C:\Console2\Console.exe" -d "%V"
Die oben genannten Lösungen funktionieren für die Versionen von bash.exe und sh.exe, die in Git enthalten sind, aber aus irgendeinem Grund nicht für die Versionen, die in cygwin enthalten sind. Ich suche immer noch nach einem Grund dafür.
BEARBEITEN
Ich habe unten eine Antwort ausgewählt, aber ich denke, die zweite Lösung oben hätte funktioniert, wenn ich die .profile-Datei im richtigen Ordner erstellt hätte. Ich habe immer wieder versucht, sie in meinem normalen Home-Verzeichnis zu erstellen, anstatt in dem von Cygwin verwendeten Home-Verzeichnis, weshalb das Skript nie ausgeführt wurde. Dies ließ mich glauben, dass die .profile-Datei unnötig war. Die Antwort, die ich ausgewählt habe (danke, Hugh!), erklärt klar, wie jedes der Skripte (.bash_profile, .bash_login, .profile und .bashrc) von Bash verwendet wird, was mir dabei half, herauszufinden, dass ich sie an der falschen Stelle abgelegt hatte.
Antwort1
Von demHandbuch,
Wenn Bash als interaktive Anmelde-Shell oder als nicht-interaktive Shell mit der Option --login aufgerufen wird, liest und führt es zuerst Befehle aus der Datei /etc/profile aus, sofern diese Datei vorhanden ist.
/etc/profile
enthält standardmäßig den folgenden Code:
# Make sure we start in home unless invoked by CHERE
if [ ! -z "${CHERE_INVOKING}" ]; then
unset CHERE_INVOKING
else
cd "${HOME}" || echo "WARNING: Failed attempt to cd into ${HOME}!"
fi
Eine Lösung wäre also, eine Windows-Batchdatei zu erstellen, die die Umgebungsvariable CHERE_INVOKING
vor dem Starten von Bash festlegt. Das ist nicht sehr praktisch.
Nächste,
Nachdem diese Datei gelesen wurde, sucht es in dieser Reihenfolge nach ~/.bash_profile, ~/.bash_login und ~/.profile und liest und führt Befehle aus der ersten Datei aus, die vorhanden und lesbar ist.
Diese Profilskripte führen standardmäßig Ihr ~/.bashrc
Skript aus, wenn es existiert. cd -
Am Ende meiner .bashrc
Arbeit (mit der neuesten Console2 und Cygwin Bash) steht:
echo 'cd -' >> ~/.bashrc
Übrigens rufe ich Console2 ( Console.exe
) ohne Argumente auf – der Windows Explorer stellt sicher, dass es in dem Verzeichnis gestartet wird, auf das ich mit der rechten Maustaste geklickt habe. Ich verwende XP, aber ich bezweifle, dass MS dieses Verhalten in späteren Windows-Versionen ändern würde. Ich lasse auch die Option „Startverzeichnis“ für meine Bash-Registerkarte leer.
Antwort2
~/.profile
Folgendes scheint Ihnen nicht gelungen zu sein :
cd -