如何在 OS X 中使用环境变量缩小长路径的提示(扩展‘~’)

如何在 OS X 中使用环境变量缩小长路径的提示(扩展‘~’)

我已经看到它在 gemset 环境中工作,我现在想重现它,因为我需要在一个非常缩进的目录路径上工作。

基本上我有一个$GEM_HOME指向的环境变量~/.rvm/somewhere。每当我时,cd ~/.rvm/somewhere/someSubdir我的提示都会是:giulio@Giulios-MacBook-Pro:$GEM_HOME/someSubdir

它非常漂亮和紧凑,所以现在我想缩小我的 oh-my-zsh 提示符,因为我现在正在 Parallels Windows 框上工作,并且我的提示符中有一条很长的路径,

我想:

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

这样当我在/Users/giulio/Documents/Parallels/Windows\ 8.pvm/Windows\ Disks/C/Users提示时就会显示WIN_HOME/USERS

基本上,我想通过一些附加目录来获取有关我的用户~的行为。/Users/giulio

我怎样才能得到它?

谢谢,

答案1

您还可以使用hash -d来设置静态命名目录(就像用户家里一样):

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

而不是整个路径将显示~WIN_HOME。您也可以通过 进入该目录cd ~WIN_HOME

静态命名目录会自动为用户主目录创建(~someuser指向“someuser”的主目录)。对于包含绝对路径的参数(在您的情况下$GEM_HOME),一旦使用~后跟参数名称( )进行访问或设置了~GEM_HOME选项,也是如此。AUTO_NAME_DIRS

hash -d其优点在于您不需要用参数来扰乱您的环境。

对于提示将始终使用路径的最短表示。因此,如果您设置hash -d temporary_directory=/tmp/foo,则提示将显示/tmp/foo,而不是~temporary_directory

答案2

我发现 ZSH 有一个名为的选项AUTO_NAME_DIRS,它告诉 ZSH 按照我想要的方式扩展目录。

我只需要setopt autonamedirs在 shell 中设置环境变量。它就起作用了:)

相关内容