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


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.*'"

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

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.


Vous pourrez peut-être encore faire $USERPROFILE travail. Essaye ça: HOME=$(cd "$USERPROFILE" && pwd).
jpmc26
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.