Dossier d'accueil MSYS2: show ~

5

Je viens d’installer MSYS2, et pour qu’il utilise mon dossier d’utilisateur Windows en tant que $ HOME, je mets ceci dans /etc/bash.bashrc:

HOME=$USERPROFILE

Et cela fonctionne bien quand je lance juste le cd, sauf que l'invite ne montre plus ~ comme étant le chemin actuel quand je suis là. Un autre problème est que

cd ~

m'emmène à mon répertoire personnel, mais appuyer sur tab après ~ ne le complète pas avec le contenu de mon répertoire personnel; Maintenant, je reçois une liste des utilisateurs de mon ordinateur précédés du préfixe ~, et essayer d’accéder à l’un de ceux-ci le fait essayer de se connecter à / home / (nom d’utilisateur).

Comment puis-je jouer ~ avec un répertoire personnel qui ne réside pas dans / home?

ps: Réputation trop basse, je ne pouvais pas la taguer msys2

tacospice
la source
1
Et si vous tapez ~/ et puis Tab? (Il ne devrait pas développer avec le contenu de votre répertoire personnel si vous tapez ~ et puis Tab; on dirait que c'est ce qu'il faut faire.)
G-Man
oh, je ne le savais pas. ~ / et l'onglet ne se développe pas du tout.
tacospice
Que diriez-vous ~/ta puis Tab, où vous avez un fichier dans votre répertoire personnel dont le nom commence par ta?
G-Man
Pareil là-bas, ça ne s'étend pas.
tacospice
est votre nom d'utilisateur tacospice? que se passe-t-il si vous tapez ~ tac & lt; onglet & gt; ... cela se propage-t-il à un "~ tacospice" complet? Pour développer cela, mettez-le dans un "écho". Cela me rappelle la question de savoir si bach devrait ou non développer les variables lors de l'exécution rapide. Certains pensent que oui, d'autres que non ... Je pense que c'est devenu une option obscure. Peut être similaire pour ~, mais ne pensez pas qu'il est généralement étendu. Qu'est-ce que "echo ~" affiche?
Astara

Réponses:

6

La bonne façon de faire est de mettre cela dans /etc/nsswitch.conf:

db_home: windows

Voir ici pour les docs.

Aussi, pour rendre ma sortie homedir plus lisible, je mets ceci dans ~ / .bashrc:

alias ls="ls -h --color=auto --hide='ntuser.*' --hide='NTUSER.*'"
Rafael Kitover
la source
Dans mon environnement d'entreprise, cela le mettait sur un lecteur réseau pour moi, pas sur le C: \ Users local, ce que je voulais.
dsz
4

modifier /etc/fstab à monter C:\Users comme /home et le tour est joué! Par exemple, ajoutez ce qui suit à la fin de fstab:

C:/Users /home ntfs binary,noacl,auto 1 1
Bahman M.
la source
Après avoir lu à propos du format référencé chez Cygwin ( cygwin.com/cygwin-ug-net/using.html#mount-table ), Je suis curieux de connaître les choix de la troisième colonne ici. binary c'est bien, auto est ignoré, donc peut être omis. Quel est l'avantage de noacl plus de acl? Il semble que cygwin est capable de construire des autorisations POSIX à partir de celles de NTFS. Est-ce juste pour rester en ligne avec les défauts cygdrive réglages?
FRIdSUN
Eh bien, c'était il y a quelque temps lorsque j'ai dû écrire du code dans un environnement Win64; Honnêtement, je ne me souviens plus de la raison :-)
Bahman M.
2
En lisant davantage, apparemment, la conversion effectuée avec acl n'est pas bon. Je suppose que c'est assez bon pour utiliser binary,noacl.
FRIdSUN
1
@FRIdSUN acl est mauvais si vous avez mélangé des fichiers et des répertoires avec cygwin (ou msys) / windows. Msys par défaut monte des lecteurs noacl, cygwin acl C’est probablement parce que l’équipe de cygwin a supposé, à tort, que les utilisateurs restaient dans l’environnement cygwin tout le temps et n’utilisaient pas les outils Windows dans les mêmes répertoires que ceux utilisés pour cygwin. cygwin manipule les listes de contrôle d'accès de manière non standard afin d'émuler les autorisations POSIX sur les fichiers (il n'y a pas de relation 1: 1 avec les attributs de fichier NTFS). En bout de ligne, pour un montage typique à usage mixte noacl.
Peter A. Schneider
3

$ USERPROFILE pointe vers le dossier personnel de l'utilisateur dans les fenêtres format, mais MSYS s’attend évidemment à une UNIX chemin de style. J'avais lu la suggestion dans un autre billet, peut-être ici, et c'est pourquoi je l'ai essayée.

Pour une raison quelconque, cd: ing dans un chemin Windows dans MSH bash vous amènera à l'emplacement de montage correct de ce dossier, mais vous ne serez plus dans le chemin spécifié par $ HOME , je crois que c’est la raison pour laquelle la suggestion fonctionne, mais ne remplace toujours pas le chemin par ~ dans l’invite.

Après que cette situation me soit apparue (en partie grâce à Astara), je suis parvenu à ceci:

HOME=/c/Users/$USER

dans /etc/bash.bashrc, ou dans n'importe quel fichier bashrc, si vous n'utilisez pas MSYS2

Bien entendu, cela nécessite que votre dossier d’utilisateurs soit C: \ Users, comme c’est le cas sous Windows 7 et 8 au moins.

tacospice
la source
Vous pourrez peut-être encore faire $USERPROFILE travail. Essaye ça: HOME=$(cd "$USERPROFILE" && pwd).
jpmc26