web-dev-qa-db-fra.com

Définir un répertoire par défaut sur les fenêtres BASH

Le problème que j’éprouve, c’est que chaque fois que j’ouvre bash, il m’affiche un répertoire indésirable. Je dois donc taper les commandes cd/mnt/c pour accéder aux fichiers de mon ordinateur tels que téléchargements, documents, etc. répertoire par défaut quand j'ouvre bash?

6
daniel

L'exécutable Windows bash.exe qui démarre Bash sous Windows fait implicitement du répertoire actuel son répertoire de démarrage.

Cela signifie que vous pouvez simplement modifier le fichier de raccourci qui ouvre Bash et changer son champ Start in: pour ouvrir Bash dans le répertoire de votre choix (spécifiez un chemin Windows normal ; il est automatiquement traduit en chemin /mnt/c- au démarrage de Bash).

  • Avertissement : le fichier de raccourci officiel Bash on Ubuntu on Windows (dans le menu Démarrer) transmet ~ comme répertoire de démarrage dans le champ Target:; Supprimez simplement  ~ de la valeur C:\Windows\System32\bash.exe ~ dans Target:, puis renseignez le champ Start in:.

Bien sûr, vous pouvez créer de nouveaux fichiers de raccourci, chacun avec son propre répertoire de démarrage, si vous le souhaitez.


Ajout d'une commande Bash Console Here au menu contextuel des dossiers dans l'explorateur de fichiers

Mise à jour : version préliminaire 17666 vient avec un menu contextuel intégré - cependant, il vous oblige à maintenir Shift avant de cliquer avec le bouton droit de la souris pour y accéder; la solution ci-dessous peut donc toujours être intéressante si vous souhaitez que la commande affiche sans condition .

Si vous enregistrez le texte suivant dans un fichier *.reg et l'ouvrez (double-cliquez dessus) , vous serez invité à importer les définitions dans votre registre spécifique Hive.

Après l’importation, vous trouverez une commande Bash Console Here dans le menu contextuel des dossiers de l’explorateur de fichiers, ainsi que lorsque vous cliquez dans l’espace vide d’un dossier.
Lors de la sélection de cette commande, une fenêtre de la console Bash s’ouvrira dans ce dossier.

Avertissement : Parce qu'un. cmd.exe doit être utilisé pour changer de répertoire avant d'appeler bash.exe, la fenêtre de la console aura l'icône cmd.exe et sera groupée avec le cmd.exe normal dans la barre des tâches.

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"

Vous pouvez également utiliser l'extrait de code PowerShell suivant pour créer les entrées de registre:

$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
}

Pour supprimer les entrées plus tard:

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

Vous devrez peut-être le créer, mais ajoutez cette ligne à votre .bashrc dans votre répertoire $HOME (généralement /home/user/):

cd /mnt/c

Gardez à l'esprit que, comme Jim l'avait dit, "Cela risquerait de casser n'importe quel type de raccourci Open bash here".

Vous pouvez en lire un peu plus à ce sujet ici: https://unix.stackexchange.com/questions/140602/how-do-i-start-all-Shell-sessions-in -a-repertoire-autre-que-maison

3
jramos775

Une autre possibilité - et je dois souligner que vous avez vraiment devez comprendre ce que vous faites, consiste à définir votre répertoire $HOME sur /mnt/c.

Vous ne pouvez le faire que si

  • /mnt/c est toujours monté.
  • Votre utilisateur bash a le total des permissions en lecture/écriture/exécution sur /mnt/c
  • /mnt/c est not accessible à toute personne à laquelle vous ne voulez pas avoir accès - votre répertoire $HOME contiendra .ssh/ qui doit être privé.
  • Vous pouvez copier/déplacer tous les fichiers de votre répertoire $HOME d'origine vers /mnt/c.

Vous pouvez le faire en utilisant

usermod --home /mnt/c

ou en changeant votre répertoire personnel dans /etc/passwd

Mise en garde: faire cette erreur peut vous empêcher de vous connecter ou rendre votre compte vulnérable.

1
Barton Chittenden