it-swarm.com.de

Legen Sie standardmäßig ein Verzeichnis für BASH-Fenster fest

Das Problem, das ich habe, ist, dass ich jedes Mal, wenn ich bash öffne, zu einem unerwünschten Verzeichnis führt. Daher muss ich die Befehle cd/mnt/c eingeben, um auf meine PC-Dateien wie Downloads, Dokumente usw. zuzugreifen Verzeichnis standardmäßig beim Öffnen von bash?

6
daniel

Die bash.exe Windows-Programmdatei, die Bash unter Windows startet, macht das aktuelle Verzeichnis implizit zum Startverzeichnis.

Das bedeutet, dass Sie die Verknüpfungsdatei, mit der Bash geöffnet wird, einfach und das Feld Start in: so ändern können, dass Bash im Verzeichnis Ihrer Wahl geöffnet wird (geben Sie einen regulären Windows-Pfad an ; es wird automatisch in einen /mnt/c-vorangestellten Pfad übersetzt, wenn Bash startet).

  • Vorsichtsmaßnahme : Die offizielle Bash on Ubuntu on Windows-Verknüpfungsdatei (im Startmenü) übergibt ~ als Startverzeichnis als Teil des Target:-Felds. Entfernen Sie einfach  ~ aus dem Wert C:\Windows\System32\bash.exe ~ in Target: und füllen Sie dann das Feld Start in: aus.

Natürlich können Sie bei Bedarf neue Verknüpfungsdateien mit jeweils eigenem Startverzeichnis erstellen.


Hinzufügen eines Befehls Bash Console Here zum Kontextmenü von Ordnern im Datei-Explorer

Update : Prerelease Build 17666 jetzt mit eingebautem Kontextmenü - Sie müssen jedoch gedrückt halten Shift bevor Sie mit der rechten Maustaste klicken, um darauf zuzugreifen; Die folgende Lösung kann daher weiterhin von Interesse sein, wenn Sie möchten, dass der Befehl bedingungslos anzeigt.

Wenn Sie den folgenden Text in einer *.reg-Datei speichern und diese öffnen (Doppelklick) , werden Sie aufgefordert, die Definitionen in Ihre benutzer- spezifische Registry Hive.

Nach dem Import finden Sie einen Bash Console Here -Befehl im Kontextmenü von Ordnern im Datei-Explorer und auch, wenn Sie in den leeren Bereich innerhalb eines Ordners klicken.
Wenn Sie diesen Befehl auswählen, wird ein Bash-Konsolenfenster in diesem Ordner geöffnet.

Einschränkung : Weil ein Aux. Der Aufruf cmd.exe muss verwendet werden, um das Verzeichnis zu ändern, bevor bash.exe aufgerufen wird. Das Konsolenfenster hat das Symbol cmd.exe und wird in der Taskleiste mit dem regulären cmd.exe gruppiert.

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\SOFTWARE\Classes\Directory\Background\Shell\BashConsoleHere]
@="Bash Console Here"
"Icon"=hex(2):25,00,4c,00,4f,00,43,00,41,00,4c,00,41,00,50,00,50,00,44,00,41,\
  00,54,00,41,00,25,00,5c,00,6c,00,78,00,73,00,73,00,5c,00,62,00,61,00,73,00,\
  68,00,2e,00,69,00,63,00,6f,00,00,00

[HKEY_CURRENT_USER\SOFTWARE\Classes\Directory\Background\Shell\BashConsoleHere\command]
@="cmd /c cd \"%V\" && bash.exe"

[HKEY_CURRENT_USER\SOFTWARE\Classes\Directory\Shell\BashConsoleHere]
@="Bash Console Here"
"Icon"=hex(2):25,00,4c,00,4f,00,43,00,41,00,4c,00,41,00,50,00,50,00,44,00,41,\
  00,54,00,41,00,25,00,5c,00,6c,00,78,00,73,00,73,00,5c,00,62,00,61,00,73,00,\
  68,00,2e,00,69,00,63,00,6f,00,00,00

[HKEY_CURRENT_USER\SOFTWARE\Classes\Directory\Shell\BashConsoleHere\command]
@="cmd /c cd \"%1\" && bash.exe"

Alternativ können Sie das folgende PowerShell-Snippet verwenden, um die Registrierungseinträge zu erstellen:

$null = 0..1 | % {
  $key = New-Item -Force ('HKCU:\Software\Classes\Directory{0}\Shell\BashConsoleHere' -f ('', '\Background')[$_])
  $key | New-ItemProperty -Name '(Default)' -Value 'Bash Console Here' -Type String
  $key | New-ItemProperty -Name 'Icon' -Value '%LOCALAPPDATA%\lxss\bash.ico' -Type ExpandString
  $key = New-Item -Force "$($key.PsPath)\command"
  $key | New-ItemProperty -Name '(Default)' -Value "cmd /c cd `"$(('%1', '%V')[$_])`" && bash.exe" -Type String
}

So entfernen Sie die Einträge später:

0..1 | % {
  Remove-Item -Recurse -LiteralPath ('HKCU:\Software\Classes\Directory{0}\Shell\BashConsoleHere' -f ('', '\Background')[$_])
}
7
mklement0

Sie müssen es möglicherweise erstellen, aber fügen Sie diese Zeile Ihrem .bashrc in Ihrem $HOME-Verzeichnis hinzu (normalerweise /home/user/):

cd /mnt/c

Denken Sie daran, dass genau wie Jim gesagt hat: "Dies könnte jedoch jede Art von Open bash here-Verknüpfungen zerstören".

Sie können etwas mehr darüber in diesem Thread lesen: https://unix.stackexchange.com/questions/140602/how-do-i-start-all-Shell-sessions-in -a-verzeichnis-anders-als-zuhause

3
jramos775

Eine andere Möglichkeit - und ich muss betonen, dass Sie wirklich verstehen müssen, was Sie tun, ist, Ihr $HOME-Verzeichnis auf /mnt/c zu setzen.

Sie können dies nur tun, wenn

  • /mnt/c ist immer eingehängt.
  • Ihr bash-Benutzer hat insgesamt Lese-/Schreib-/Ausführungsberechtigungen für /mnt/c.
  • /mnt/c ist nicht für jeden zugänglich, auf den Sie keinen Zugriff haben möchten - Ihr $HOME-Verzeichnis enthält .ssh/, der muss privat ist.
  • Sie können alle Dateien aus Ihrem ursprünglichen $HOME-Verzeichnis nach /mnt/c kopieren/verschieben.

Sie können dies mit tun

usermod --home /mnt/c

oder durch Ändern Ihres Heimatverzeichnisses in /etc/passwd

Vorsichtsmaßnahme: Wenn Sie dies falsch machen, können Sie sich möglicherweise nicht anmelden oder Ihr Konto ist verwundbar.

1