【发布时间】:2026-01-23 07:10:01
【问题描述】:
这发生在 OSX El Capitan 上,但也发生在我的 Ubuntu 别名中。
我为将工作目录传递给 docker 容器而创建的别名遇到了问题。
这不起作用(无论我在哪个目录中,$(pwd) 总是通过 ~/Users/username):
alias phpqa="docker run --rm -u $UID -v $(pwd):/app eko3alpha/docker-phpqa"
作品:
alias phpqa='docker run --rm -u $UID -v $(pwd):/app eko3alpha/docker-phpqa'
但是,当传入错误的路径时,我的脚本开始出现意外错误。所以我做了一个实验。我将这两个别名都添加到了我的 ~/.bash_profile 中。
alias getpath="echo $(pwd)"
alias getpath2='echo $(pwd)'
我注销然后重新登录。
更改目录:
$ cd /Users/username/correct/path/to/project
执行两个别名:
$ getpath
/Users/username
$ getpath2
/Users/username/correct/path/to/project
双引号别名总是返回用户主目录,而单引号别名返回当前目录。有人可以解释为什么会这样吗?
【问题讨论】:
-
搜索是一门有用的知识。 *.com/questions/6697753/…
-
如果单引号是字面的,那么当我执行用单引号包裹的“getpath2”时,为什么我没有得到“echo $(pwd)”。相反,我得到“/Users/username/correct/path/to/project”
-
很简单,自己试试吧:echo "echo $(pwd)" aaaand echo 'echo $(pwd)' 感觉不一样?
-
您的回答并没有解决我的问题,即为什么 $(PWD) 的评估方式取决于我的别名中的单引号和双引号
-
@IporSircer,不久前——POSIX sh 可以追溯到 90 年代。虽然,当然,它主要受 ksh 的影响,而 ksh 主要受 Bourne 的影响,所以我们当然可以将手头的决定追溯到 70 年代。
标签: macos shell alias osx-elcapitan