J'ai installé MinGW-W64 et MSYS2. Mais comment puis-je changer le répertoire HOME dans MSYS2? Ainsi, lorsque je tape cd $ home ou cd ~, il se place dans un autre répertoire que j'ai défini.
Et comment puis-je écrire un code pour que le répertoire de départ soit toujours où le fichier .bat est placé?
En cmd j'ai utilisé ce code:
% ~ d1 cd "% ~ p1" call cmd
ainsi, lorsque j'ouvre cmd sur mon bureau, il démarre à partir du répertoire situé sur le bureau.
Comment puis-je faire la même chose avec msys2?
Si vous souhaitez utiliser votre dossier de base Windows en tant que dossier de base pour MSYS2, vous pouvez modifier /etc/nsswitch.conf et écrire:
db_home: windows
Msys2 utilisera Windows% HOME% car il s'agit de $ HOME dir. Si vous définissez% HOME% dans les variables d'environnement (dans le répertoire Windows, vous devez utiliser Msys2), cela fonctionnera.
Dans l'un de vos scripts de démarrage Shell (par exemple, ~/.bash_profile
où ~
est le répertoire de base par défaut/d'origine), vous pouvez modifier la variable d'environnement $ HOME:
export HOME=/something/else
Si vous souhaitez que votre shell s'ouvre dans ce répertoire, vous devrez peut-être exécuter cd
(sans argument) après avoir défini $HOME
; Je ne l'ai pas testé.
Créez ou modifiez un fichier MSYS2 /etc/passwd
. Deux manières de le faire sont présentées ci-dessous.
La commande suivante peut être exécutée à partir d'un shell MSYS2 et fonctionne en toute sécurité, que le fichier existe ou non et qu'il contienne ou non déjà l'utilisateur actuel:
$ grep "^${USERNAME}:" /etc/passwd >/dev/null 2>&1 || mkpasswd | grep "^${USERNAME}:" >>/etc/passwd
Ensuite, éditez /etc/passwd
et modifiez le champ de répertoire de base de l'utilisateur correspondant (le 6ème champ délimité par des deux-points).
$ vim /etc/passwd
BONUS: Il est également possible de changer le nom d'utilisateur MSYS2 en modifiant le premier champ.
Si vous le souhaitez, déplacez le contenu du répertoire de base actuel vers le nouveau répertoire de base.
Déconnectez-vous, puis reconnectez-vous.
Les éditions /etc/passwd
peuvent être effectuées sans édition manuelle, mais cela crée une ligne de commande plus complexe à coller dans le shell MSYS2. Elle risque de ne pas fonctionner si le fichier /etc/passwd
existe déjà et contient déjà le nom d'utilisateur:
__DIR="/path/to/home"
mkpasswd | grep "^${USERNAME}:" | \
awk -v DIR="${__DIR}" -v RS=":" -v ORS="/n" \
'NR == 6 { printf(DIR ":"); next } { printf("%s", $0) } NR < 7 { printf(":") }' - >>/etc/passwd
J'ai créé un fichier de commandes qui définit la variable HOME:
set HOME=C:\Users\%USERNAME%
C:\LocalApp\PortableGit\git-bash.exe
Cela me permet de placer mon fichier .bash_profile dans cette page d'accueil (plutôt que sur l'emplacement réseau par défaut, qui fonctionne très lentement).