linux - Docker $(pwd) 和 bash 别名

标签 linux bash docker

我在 Ubuntu 16.04 中运行 Docker CE。我为 polymer-cli 创建了一个 Docker 镜像。 这个想法是能够使用挂载当前目录的 bash 别名从一次性 docker 容器内部运行 polymer 命令,运行命令然后销毁容器,如下所示:

docker run --rm -it -v $(pwd):/home/node/app -u node fresnizky/polymer-cli polymer

这很完美,但是如果我为这个命令创建一个 bash 别名:

alias polymer="docker run --rm -it -v $(pwd):/home/node/app -u node fresnizky/polymer-cli polymer "

然后 $(pwd) 指向我的主目录而不是我的当前目录。

谁知道我该如何解决这个问题?

最佳答案

问题是,由于您使用了双引号,命令替换是在 alias 声明时完成的,而不是之后。

使用单引号:

alias polymer='docker run --rm -it -v $(pwd):/home/node/app -u node fresnizky/polymer-cli polymer'

此外,您可以使用环境变量 PWD 而不是使用命令替换,$(pwd) 将扩展为与 pwd。事实上,pwd 命令也从 PWD 变量中获取它的值。

关于linux - Docker $(pwd) 和 bash 别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44259515/

相关文章:

bash - 为什么模式 "*.so?(.*)"在脚本中而不是在命令行中产生语法错误?

mysql - 如何更改Docker Mysql容器连接端口?

amazon-web-services - 使用 Docker on AWS 进行 POST 的 Flask 应用程序中的奇怪行为

c - TCP/IP头文件的组织

linux - 如何将 "attach"工作目录到裸 GIT 存储库

linux - 我想在运行命令时获得变量的输出,但它全部合并到一行中。我应该怎么办?

私有(private) docker 存储库的 ssl 证书

html - 在 HTTP 服务器上,为什么用户的 public_html 目录的权限属性必须设置为 : execute by all?

linux - 在 Mint 15 上使用 Apache2 设置多个虚拟主机时出错

python - 让 bash 脚本将多个程序作为单独的进程执行