注意:是的,这是在 Mac OS 11.6.2 Big Sur 上。
现在我在.zshrc
文件中使用了 zsh 别名,以便于终端导航。我想尝试为 PWD 输出着色,但实际输出的是上一个目录。我添加了一个额外的 PWD 命令来显示当前目录,但着色的始终是最后一个目录:
alias goto-config="cd ~/checkouts/trunk/service/configs;pwd;echo -e '\n\e[1;32m $(pwd) \e[0m\n'"
实际输入/输出:
User.Me % goto--config
/Users/Me/checkouts/trunk/service (this line is standard text color)
/Users/Me/directory/from/which/command/was/called (this line is in color)
预期输入/输出:
User.Me % goto--config
/Users/Me/checkouts/trunk/service (this line is standard text color)
/Users/Me/checkouts/trunk/service (this line is in color)
所以,我很困惑。我以为 $(pwd) 的回显会回显我们刚刚导航到的目录路径,就像上面显示的一样。我做错了什么?
谢谢!
答案1
虽然我没有真正的解决方案,因为我目前无法访问 MacOS 系统,但我仍然会写下答案,为您提供不同的可能的解决方法。
将路径存储在变量中
alias asdf="dir=~/checkouts/trunk/service/configs ; cd $dir ; pwd ; echo -e '\n\e[1;32m $(echo $dir) \e[0m\n'"
在此示例中,路径将从 获取$dir
,而不是从 获取的输出pwd
。
使用/bin/pwd
MacOS 似乎包含该pwd
命令的不同实现。您可以尝试使用/bin/pwd
所述这里。
使用pwd -P
通常默认情况下pwd
只打印 的内容$PWD
。你可以用标志告诉它-P
打印物理位置:
pwd: pwd [-LP]
Print the name of the current working directory.
Options:
-L print the value of $PWD if it names the current working
directory
-P print the physical directory, without any symbolic links
By default, `pwd' behaves as if `-L' were specified.
使用 zsh 函数
您可以在文件内部创建一个函数.zshrc
而不是别名:
goto-config()
{
cd ~/checkouts/trunk/service/configs
pwd
echo -e "\n\e[1;32m $(pwd) \e[0m\n"
}
如果其中一种方法确实有效,请告诉我。