我已经看到它在 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 中设置环境变量。它就起作用了:)