3 votes

Comment réduire l'invite d'un long chemin en utilisant des variables d'environnement dans OS X (étendre '~')

J'ai vu cela fonctionner avec l'environnement gemset, j'aimerais le reproduire maintenant que je dois travailler sur un chemin de répertoire très indenté.

En gros, j'avais un $GEM_HOME variable d'environnement pointant vers ~/.rvm/somewhere . Chaque fois que je cd ~/.rvm/somewhere/someSubdir ma demande serait : giulio@Giulios-MacBook-Pro:$GEM_HOME/someSubdir .

C'était très agréable et compact et maintenant je voudrais réduire mon invite oh-my-zsh car je travaille maintenant sur une boîte Windows Parallels, et j'ai un très long chemin dans mon invite,

J'aimerais bien :

export WIN_HOME=/Users/giulio/Documents/Parallels/Windows\ 8.pvm/Windows\ Disks/C

de sorte que lorsque je suis dans /Users/giulio/Documents/Parallels/Windows\ 8.pvm/Windows\ Disks/C/Users l'invite affichera simplement WIN_HOME/USERS .

En gros, je voudrais obtenir le comportement de ~ qui fait référence à /Users/giulio pour mon utilisateur avec quelques répertoires supplémentaires.

Comment puis-je obtenir ça ?

Merci,

3voto

Dženan Points 306

Vous pouvez également utiliser hash -d pour fixer Répertoires statiques nommés (tout comme les maisons des utilisateurs) :

hash -d WIN_HOME='/Users/giulio/Documents/Parallels/Windows 8.pvm/Windows Disks/C'

Au lieu de l'ensemble du chemin zsh montrera ~WIN_HOME . Vous pouvez également accéder à ce répertoire par cd ~WIN_HOME .

Répertoires statiques nommés sont automatiquement créés pour les foyers des utilisateurs ( ~someuser pointe vers le répertoire personnel de "someuser"). Egalement pour les paramètres qui contiennent des chemins absolus (Dans votre cas $GEM_HOME ) une fois qu'on y a accédé avec ~ suivi du nom du paramètre ( ~GEM_HOME ) ou si l'option AUTO_NAME_DIRS est réglé.

hash -d présente l'avantage de ne pas devoir encombrer votre environnement de paramètres.

Pour l'invite zsh utilisera toujours la représentation la plus courte d'un chemin. Ainsi, si vous définissez hash -d temporary_directory=/tmp/foo l'invite affichera /tmp/foo et non ~temporary_directory .

2voto

Sergey Kozlov Points 13

Je me suis dit que ZSH avait une option appelée AUTO_NAME_DIRS ce qui indique à ZSH de développer les répertoires comme je le souhaite.

Je devais juste setopt autonamedirs dans le Shell et définir la variable env. et ça a marché :)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X