web-dev-qa-db-fra.com

Comment changer le répertoire HOME et démarrer le répertoire sur MSYS2?

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?

11
Coder88

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
17
dr ganjoo

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.

1
getakanda

Dans l'un de vos scripts de démarrage Shell (par exemple, ~/.bash_profile~ 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é.

1
David Grayson

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
0
kbulgrien

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).

0
Dom Reilly