Unix 为什么我创建的别名没有在我期望的路径中执行?

Unix 为什么我创建的别名没有在我期望的路径中执行?,unix,path,zsh,alias,pwd,Unix,Path,Zsh,Alias,Pwd,我已在终端中创建了一个别名,用于将我所在的路径复制到剪贴板 别名位于我的.zshrc文件中 别名如下所示: alias cpath="echo -n `pwd`|pbcopy" 当我在终端中执行以下命令时,它始终有效: echo -n `pwd`|pbcopy 但是,当我使用别名cpath时,它会复制我第一次打开特定终端时的路径。例如,如果我在/Users/tommyrharper目录中打开一个终端,然后运行cpath,它会将以下路径复制到我的剪贴板:/Users/tom

我已在终端中创建了一个别名,用于将我所在的路径复制到剪贴板

别名位于我的
.zshrc
文件中

别名如下所示:

alias cpath="echo -n `pwd`|pbcopy"
当我在终端中执行以下命令时,它始终有效:

echo -n `pwd`|pbcopy
但是,当我使用别名
cpath
时,它会复制我第一次打开特定终端时的路径。例如,如果我在
/Users/tommyrharper
目录中打开一个终端,然后运行
cpath
,它会将以下路径复制到我的剪贴板:
/Users/tommyrharper

如果我随后将
cd
放入我的
Documents
文件夹,然后运行
cpath
,那么它仍然会将
/Users/tommyrharper
添加到我的剪贴板

但是,如果我直接运行echo-n`pwd`|pbcopy,它会将
/Users/tommyrharper/Documents
添加到我的剪贴板

如果我最初在
/Users/tommyrharper/Documents
中打开一个终端,然后运行
cpath
,那么它会将
/Users/tommyrharper/Documents
添加到我的剪贴板

但是,如果我将
cd
放入
Notes
目录,然后运行
cpath
,它仍然会将
/Users/tommyrharper/Documents
添加到我的剪贴板

为什么我的别名的行为方式与我直接在终端中输入命令时的行为方式不同


有没有办法让我的别名按预期工作?

这是因为当启动zsh sources
.zshrc
时,别名中的backtick命令替换(
`pwd`
)会运行。这是因为您使用了双引号,用于计算替换

您可以通过运行
别名cpath
来确认这一点,它将显示别名的定义,现在应该包括一个路径而不是一个文本
`pwd`

如果您改为使用单引号(不计算替换)定义别名:

它将按预期工作


更多关于不同报价风格和替换的详细信息,请参见此处:

谢谢,这正是我想要的!我现在不仅有了解决方案,而且我理解了为什么以前它不起作用,以及为什么您的解决方案起作用。感谢您的回复:)
alias cpath='echo -n `pwd`|pbcopy'