Standardmäßig wird ein anderes Verzeichnis anstelle des Ausgangsverzeichnisses verwendet

180

Ich entwickle auf einer Windows-Maschine. Der einzige Ort, den ich für die Linux-Kommandozeile brauche, ist Git Bash. Das Problem ist: Wenn ich es öffne, bin ich im Home-Verzeichnis. Ich muss das Verzeichnis in meinen Arbeitsbereich ändern, wie:

cd ../../../d/work_space_for_my_company/project/code_source

Kann ich dies in eine .sh-Datei einbinden, damit ich es nicht mehr von Hand eingeben muss? Dies sollte einfach sein, aber ich habe keine Kenntnisse über die Linux-Befehlszeile. Ich bin sehr dankbar, wenn Sie mir zeigen können, wie Sie diese .sh-Datei erstellen.

Xi Zhang
quelle
5
Die folgenden Antworten sind richtig, um dies dauerhaft zu beheben. Auch ohne diese sollten Sie dies nicht jedes Mal von Hand eingeben. Git Bash enthält einen Befehlsverlauf, der zwischen den Sitzungen bestehen bleibt (im Gegensatz zu Windows-Konsolen). Wenn Sie diesen Befehl also wiederholen möchten, anstatt ihn erneut einzugeben, geben Sie einfach Strg-r und dann einen Teil des Befehls ein, z. ctrl-r../dund der Befehl wird angezeigt und geben Sie enter ein. Im Allgemeinen sollten Sie einige Minuten in das Erlernen der Verwendung des Befehlsverlaufs investieren, und dann werden Sie ihn häufig verwenden, wenn Sie die verschiedenen Git-Befehle wiederholen.
Stephen Hosking
Zu C:\Windows\System32\bash.exe -i -c 'cd /mnt/c/Data; exec "${SHELL:-bash}"'Ihrer Information, hier ist die WSL-Bash-Alternative (oder wenn Sie cmder verwenden cmd /c "C:\Windows\System32\bash.exe -i -c 'cd /mnt/c/Data; exec "${SHELL:-bash}"'" -new_console:t:Data), bei -ider die Pfeiltasten funktionieren
KCD

Antworten:

101

Schreiben Sie diese Zeile einfach in eine Datei "cd.sh" und führen Sie dies an Ihrer Shell-Eingabeaufforderung aus:

. ./cd.sh

Oder Sie können einen Alias ​​oder eine Funktion in Ihrer $HOME/.bashrcDatei erstellen:

foo() { cd /d/work_space_for_my_company/project/code_source ; }

Wenn der Verzeichnisname Leerzeichen oder andere Shell-Metazeichen enthält, benötigen Sie Anführungszeichen. Es tut nicht weh, sie hinzuzufügen, auch wenn sie nicht notwendig sind:

foo() { cd "/d/Work Space/project/code_source" ; }

(Beachten Sie, dass ich das weggelassen habe ../../..; Sie brauchen es nicht.)

BEARBEITEN: Wenn Sie eine Zeile hinzufügen

foo

auf Ihrem .bashrcnach der Definition der Funktion, wird Shell in diesem Verzeichnis starten. Oder Sie können den cdBefehl einfach direkt in Ihrem verwenden, .bashrcwenn Sie die Funktion später nicht mehr benötigen.

(Der Name fooist nur ein Beispiel; Sie sollten einen aussagekräftigeren Namen auswählen.)

Keith Thompson
quelle
5
Wie @orip hervorhebt, können Sie dies genauso gut cdin Ihrem .bashrc tun. Wenn Sie es jedoch zu einer Funktion machen, können Sie den Befehl später erneut verwenden, nachdem Sie in ein anderes Verzeichnis gewechselt haben.
Keith Thompson
2
Um das "../../ .." zu erklären, gibt der von Ihnen angegebene Befehl einen Pfad relativ zu Ihrem aktuellen Verzeichnis an. "../../../d/work_space_for_my_company/project/code_source"geht drei Ebenen von Ihrem aktuellen Verzeichnis (was zufällig ist $HOME) nach oben, dann nach unten zu "d", dann nach unten zu "arbeiten ...". Die Git-Bash-Shell-Umgebung "/d"bezieht sich auf das, was Windows aufruft "D:\". Die Verwendung eines absoluten Pfadnamens "/d/work_space_for_my_company/project/code_source"ist einfacher und hängt nicht davon ab, wo Sie $HOMEsich gerade befinden.
Keith Thompson
2
Wo finde ich diese .bashrcDatei?
Ptamzz
2
@ptamzz: Normalerweise wird eine .bashrcDatei in Ihrem Home-Verzeichnis erstellt, wenn Ihr Konto eingerichtet wird. Wenn nicht, können Sie es selbst erstellen.
Keith Thompson
1
Wo finden Sie "cd.sh"? Und wenn Sie Home-Verzeichnis sagen. Sprechen Sie über das Home-Verzeichnis für die aktuelle App oder?
WowBow
374

Hier ist eine weitere Windows-ähnliche Lösung: Klicken Sie mit der rechten Maustaste auf die Windows-Verknüpfung, mit der Sie Git Bash starten, und klicken Sie auf Eigenschaften. Ändern Sie den Wert von "Start In" in den gewünschten Arbeitsbereichspfad.

Bearbeiten: Stellen Sie außerdem sicher, dass der Zielwert nicht die Option --cd-to-home enthält, wie in den Kommentaren unten angegeben.

David Siegal
quelle
13
Das einzige Problem mit dieser Lösung ist, dass Sie nicht den Standardpfad für das Home-Verzeichnis ~
festlegen
67
Das hat bei mir funktioniert. Außerdem musste ich die Option --cd-to-home im Startbefehl entfernen.
ChinLoong
2
Wenn Sie die Verknüpfung in der Windows 7-Taskleiste angeheftet haben, müssen Sie zweimal mit der rechten Maustaste auf das Programm klicken, wie von lifehacker.com/5475752/…
manat
11
Einverstanden, dass dies die einfachste Lösung ist, aber unbedingt geändert werden sollte, um das Entfernen der "--cd-to-home" in das Ziel aufzunehmen. Ohne diese letzte Änderung verwenden Sie standardmäßig den Ordner C: \ Users [Name] (es sei denn, Sie haben Ihr Setup geändert).
Zeus56
2
Zur Verdeutlichung sollte in der Verknüpfung das "Ziel" %WINDIR%\System32\bash.exeund das "Start In" C:\Tempoder ein beliebiger Pfad sein.
Demoncodemonkey
45

Fügen Sie die Zeile zur .bashrcDatei im Ausgangsverzeichnis hinzu (erstellen Sie die Datei, falls sie nicht vorhanden ist):

cd ~
touch .bashrc
echo "cd ~/Desktop/repos/" >> .bashrc
orip
quelle
5
Ich weiß, dass ich super spät zur Party komme, aber danke, dass du den Funktionsquatsch gestoppt hast! :)
Felipe Gerard
1
Das war perfekt. Ging zu meinem .bashrc.localund fügte cd ~/Desktop/repos/;unten hinzu. Lief wie am Schnürchen! Das Ändern des Bodens von .bashrcwürde auch funktionieren.
Michael Dimmitt
Ich habe gerade die .bashrc-Datei bei ~ erstellt und beim nächsten Öffnen von git Bash wurde beanstandet, dass ich kein .bash_profile und keine andere Datei habe, sodass sie für mich erstellt wurden. Und nach der Wiedereröffnung von Git Bash funktionierte es ohne Blumen!
Pini Cheyni
Entfernen Sie die Option --cd-to-home im
Startbefehl
38

Ich verwende ConEmu (dringend empfohlen unter Windows), wo ich eine Aufgabe zum Starten von Git Bash wie habe

Geben Sie hier die Bildbeschreibung ein

Beachten Sie die Schaltfläche "Startverzeichnis ..." unten. Es fügt -new_console:d:<path>dem Startbefehl des Git Bash ein hinzu. Zeigen Sie, wohin Sie möchten

Juri
quelle
Vielen Dank, dass Sie die benutzerdefinierte Aufgabe geteilt haben. Ich konnte sie nicht zum Laufen bringen. Wie kann ich danach einfache Windows-Befehle ausführen, z. B. Pingen bei Google.com?
Iman Mohamadi
1
@ImanMohamadi Für solche Dinge würde ich lieber Skripte erstellen, die Sie zu Ihrer PATH-Umgebungsvariablen hinzufügen. Sie können Cmds ausführen, p-gum Google usw. zu pingen ...
Juri
23

Dies kann Ihnen helfen.

Bildbeschreibung

  1. Klicken Sie mit der rechten Maustaste auf Git Bash -> Eigenschaften
  2. Geben Sie auf der Registerkarte Shorcut -> Feld starten -> Ihren benutzerdefinierten Pfad ein
  3. Stellen Sie sicher, dass das Feld Ziel nicht enthalten ist. --go-to-homeAndernfalls wird es weiterhin in dem in Ihrer HOME-Variablen angegebenen Verzeichnis gestartet

Das ist es.

Krish
quelle
Ich habe das versucht, aber es funktioniert nicht, wenn sich der Pfad in einem anderen Laufwerk wie d: \ projects \ test
Ray
Windows 10 zeigt diese Registerkarte für Git Bash nicht an. Sie können sie jedoch mit diesen kleinen 3 Codezeilen hacken und in einer **. Bat-Datei speichern. 1. d: 2. cd data 3.git bashWenn Sie auf die bat-Datei doppelklicken, wird sie an der gewünschten Stelle geöffnet
Krish
1
Schauen Sie sich dieses TargetFeld an, es hat keine Parameter. Standardmäßig enthält, -go-to-homewas von dort gelöscht werden muss, damit das funktioniert.
Kurapika
1
Es funktioniert für mich Ziel: "C: \ Programme \ Git \ git-bash.exe" (WICHTIG) Start in: d: / xampp / htdocs /
raftaar1191
1
Es funktioniert auch für mich mit demselben Ziel wie @ raftaar1191 (ich habe die Option "--cd-to-home" entfernt) und die Zeile "start in" auf "C: \ wamp \ www" konfiguriert, sehr nützlich!
Nayfun
10

Ich habe auch gerade die Einstellung "Start in" des Verknüpfungssymbols geändert in: %HOMEDRIVE%/xampp/htdocs/

Francis
quelle
9

Dies geschieht unter der Annahme, dass dies bei jedem Öffnen der Befehlszeile geschehen soll:

echo cd ../../../d/work_space_for_my_company/project/code_source >> ~/.bashrc

Wenn Sie nun die Shell öffnen, werden drei Verzeichnisse von zu Hause nach oben verschoben und in code_source geändert.

Dieser Code hängt einfach die Zeile "cd ../../../d/work_space_for_my_company/project/code_source" an eine Datei mit dem Namen ".bashrc" an. Das ">>" erstellt eine Datei, wenn sie nicht vorhanden ist, und hängt sie dann an. Die .bashrc-Datei ist nützlich, um Befehle beim Start / Anmelden auszuführen (dh Module laden usw.).

Usagi
quelle
9

(Bitte lesen Sie die Warnung unten)

Eine wirklich einfache Möglichkeit, dies in Windows zu tun (funktioniert mit Git Bash, möglicherweise mit anderen), besteht darin, eine Umgebungsvariable namens HOME zu erstellen, die auf das gewünschte Home-Verzeichnis verweist.

  1. Klicken Sie mit der rechten Maustaste auf meinen Computer und wählen Sie Eigenschaften
  2. Wählen Sie erweiterte Systemeinstellungen (Speicherort variiert je nach Windows-Version)
  3. Wählen Sie in den Systemeigenschaften die Registerkarte Erweitert
  4. Wählen Sie auf der Registerkarte "Erweitert" die Option "Umgebungsvariablen" (untere Schaltfläche).
  5. Überprüfen Sie unter "Systemvariable", ob Sie bereits eine Variable namens HOME haben. Wenn ja, bearbeiten Sie diese Variable, indem Sie den Variablennamen markieren und auf Bearbeiten klicken. Machen Sie den neuen Variablennamen zum gewünschten Pfad.
  6. Wenn HOME noch nicht vorhanden ist, klicken Sie unter Systemvariablen auf "Neu" und erstellen Sie eine neue Variable namens HOME, deren Wert der gewünschte Pfad ist.

Umgebungsvariable

HINWEIS: Dies kann die Funktionsweise anderer Dinge ändern. Für mich ändert sich beispielsweise, wo sich meine .ssh-Konfigurationsdateien befinden. In meinem Fall wollte ich, dass mein Zuhause U: \ ist, da dies mein Hauptort ist, an dem ich Projektarbeits- und Anwendungseinstellungen vorgenommen habe (dh es ist wirklich mein "Home" -Verzeichnis).

BEARBEITEN 23. Juni 2017: Diese Antwort wird weiterhin gelegentlich positiv bewertet, und ich möchte die Leute warnen, dass ich, obwohl dies "funktionieren" mag, @AnthonyRaymond zustimme, dass es nicht empfohlen wird. Dies ist eher eine vorübergehende Korrektur oder eine Korrektur, wenn es Ihnen egal ist, ob andere Dinge kaputt gehen. Das Wechseln Ihres Hauses verursacht keinen aktiven Schaden (wie das Löschen Ihrer Festplatte), kann aber später zu heimtückischen Belästigungen führen. Wenn Sie später nervige Probleme haben, werden Sie sich wahrscheinlich nicht an diese Änderung erinnern ... also kratzen Sie sich wahrscheinlich später am Kopf!

Genorama
quelle
Ich verstehe nicht, warum die von @asalle vorgeschlagenen Änderungen (die hauptsächlich darauf hindeuten, dass Sie auch die Benutzersystemvariablen bearbeiten können) von Bamsworld fish_ball und greg-449 abgelehnt wurden. Die Änderungen schienen vernünftig.
Genorama
Dies ist ein viel zu destruktiver Weg, um eine gute Idee zu sein. Es kann viele andere Anwendungen und sogar Fenster betreffen. Es wird nicht empfohlen
Anthony Raymond
@AnthonyRaymond Wie ich bereits bemerkt habe, kann das Ändern von "HOME" andere Konsequenzen haben, aber ich würde nicht sagen, dass es notwendigerweise destruktiv ist. In der Tat kann es von Vorteil sein, wenn Sie möchten, dass Ihr HOME ein bestimmter Speicherort ist oder wenn eine andere Anwendung HOME auf einen unerwünschten Speicherort festgelegt hat. Ich denke auf jeden Fall, dass diese Antwort Aufschluss darüber gibt, wie das Standardverzeichnis festgelegt ist.
Genorama
@AnthonyRaymond, obwohl ich damit einverstanden bin, dass im Kontext dieser Frage ein bestimmtes Projekt (z ../../../d/work_space_for_my_company/project/code_source eine schlechte Idee ist ) . Im Allgemeinen gibt es jedoch Zeiten, in denen HOME nicht sein muss/c/Users/[current user name]/
Genorama
Wenn ein spezieller Ordner auf einen anderen Speicherort verweisen soll, erstellen Sie einen Symlink. technet.microsoft.com/en-us/library/cc753194(v=ws.11).aspx Wir können nicht wissen, welches Programm die HOME-Variable verwendet, da ich der Meinung bin, dass sie etwas destruktiv ist.
Anthony Raymond
7

Klicken Sie mit der rechten Maustaste auf den Link der Git Bash-Anwendung, gehen Sie zu Eigenschaften und ändern Sie den Startort in den Speicherort, an dem er beginnen soll.

Michael Stramel
quelle
5

Von einem angehefteten Startmenüelement in Windows 10

  1. Öffnen Sie den Dateispeicherort der angehefteten Verknüpfung
  2. Öffnen Sie die Verknüpfungseigenschaften
    1. entfernen --cd-to-homearg
    2. Start inPfad aktualisieren
  3. Erneut anheften, um das Menü über kürzlich hinzugefügt zu starten

Screenshot zum Speicherort der Datei öffnen

Öffnen Sie den Screenshot der Verknüpfungseigenschaften

Screenshot der Verknüpfungseigenschaften aktualisieren

Pin über kürzlich hinzugefügte Screnshot


Vielen Dank an alle anderen Antworten dafür! Wollte Win 10 Anweisungen geben ...

Spottedmahn
quelle
4

Für Windows: Befolgen Sie diese Schritte.

  1. Gehen Sie zu Windows Home> Klicken Sie mit der rechten Maustaste auf die Anwendung "Git Bash".
  2. Eigenschaften> Verknüpfung
  3. Ändern Sie diese beiden Einstellungen: (a) Löschen - cd-to-homeaus target (b) Geben Sie unter "Start in" den Ordnerpfad ein, den Sie mit git beginnen möchten.

Das hat bei mir funktioniert :)

Md Nehaluddin Haider
quelle
3

Wenn Sie beim Öffnen der GIT-Bash eine Auswahlliste für Projekte haben möchten :

  • Bearbeiten Sie den ppathCode-Header im Pfad Ihres Git- Projekts, fügen Sie diesen Code in die .bashrc- Datei ein und kopieren Sie ihn in Ihr $ HOME- Verzeichnis (in Win Vista / 7 ist dies normalerweise c: \ Users \ $ YOU ).

.

#!/bin/bash
ppath="/d/-projects/-github"
cd $ppath
unset PROJECTS
PROJECTS+=(".")
i=0

echo
echo -e "projects:\n-------------"

for f in *
do
    if [ -d "$f" ]
    then
        PROJECTS+=("$f")
        echo -e $((++i)) "- \e[1m$f\e[0m"
    fi
done


if [ ${#PROJECTS[@]} -gt 1 ]
then
    echo -ne "\nchoose project: "
    read proj
    case "$proj" in
        [0-`expr ${#PROJECTS[@]} - 1`]) cd "${PROJECTS[proj]}" ;;
        *) echo " wrong choice" ;;
    esac
else
    echo "there is no projects"
fi
unset PROJECTS
  • Möglicherweise möchten Sie diese Datei als ausführbare Datei in GIT bash chmod + x .bashrc festlegen (sie ist jedoch wahrscheinlich redundant, da diese Datei im ntfs- Dateisystem gespeichert ist. )
s1w_
quelle
2

Meine Git Bash-Verknüpfung unter Windows hat sich beschwert, als ich die CD in mein Arbeitsverzeichnis in ~ / .bashrc legte

WARNING: Found ~/.bashrc but no ~/.bash_profile, ~/.bash_login or ~/.profile.

This looks like an incorrect setup.
A ~/.bash_profile that loads ~/.bashrc will be created for you.

Also hat git dieses .bash_profile erstellt:

$ cat ~/.bash_profile
# generated by Git for Windows
test -f ~/.profile && . ~/.profile
test -f ~/.bashrc && . ~/.bashrc

Welches macht den Job.

Alternativ können Sie einfach die .bashrc-Datei erneut entfernen und den Befehl cd in .bash_profile einfügen:

$ rm ~/.bashrc
$ echo "cd Source/Repos" >~/.bash_profile

$ cat ~/.bash_profile
cd Source/Repos

Sobald dies erledigt ist, können Sie das Fenster schließen und mithilfe Ihrer Desktop-Verknüpfung erneut öffnen. Die Eingabeaufforderung zeigt Ihnen an, dass sich Ihr Standort jetzt dort befindet, wo Sie ihn haben möchten. Es sieht so aus, als wäre dies mein Fall:

Administrator@raptor1 MINGW64 ~/Source/Repos
$
DR. RAI
quelle
2

Wenn Sie diesen Befehl eingeben: echo cd d:/some/path >> ~/.bashrc

Hängt die Zeile cd d:/some/pathan an .bashrc. Das >>erstellt eine Datei, wenn sie nicht vorhanden ist, und hängt sie dann an.

mtpultz
quelle
1

es muss sein cd d:/work_space_for_....

ohne das :funktioniert es bei mir nicht

Larsbo
quelle
1

Eine andere Lösung für Windows- Benutzer besteht darin, die Datei Git Bash.lnk in das Verzeichnis zu kopieren, von dem aus Sie starten und von dort aus starten müssen.

überspringen405
quelle