代码之家  ›  专栏  ›  技术社区  ›  Adam Matan

巴什:PWD和CURDIR有什么区别?

  •  3
  • Adam Matan  · 技术社区  · 6 年前

    我的问题

    docker run 目标,它需要当前工作目录作为其参数之一。

    我用其中一种 $(PWD) $(CURDIR)

    build: Dockerfile
            docker run ... <$(PWD) or $(CURDIR)>
    

    它们似乎产生了同样的价值。我不知道是否有一个微妙的差异,可以咬我以后,所以我想知道每一个确切的定义。

    我试过什么

    • man make

    我的问题

    两者有什么区别 $(CURDIR) 在Makefile中?

    1 回复  |  直到 6 年前
        1
  •  29
  •   Community paulsm4    4 年前

    热释光;博士

    使用 CURDIR

    首先,谢谢 Renaud Pacalet 对于 his comment

    库尔迪尔

    GNU Make Manual :

    库尔迪尔

    为了方便起见,当GNU make启动时(在处理了任何-C选项之后),它将变量CURDIR设置为当前工作目录的路径名。make不会再触及这个值:特别注意,如果包含来自其他目录的文件,CURDIR的值不会更改。如果在makefile中设置该值,则该值具有相同的优先级(默认情况下,环境变量CURDIR不会覆盖该值)。请注意,设置此变量对make的操作没有影响(例如,它不会导致make更改其工作目录)。

    PWD

    没有提到 密码 env | grep PWD 发现它是由环境设置的(在我的例子中是zsh)。GNU关于 Special Shell Variables

    密码

    posix1003.1-2001要求cd和pwd必须更新pwd环境变量以指向当前目录的逻辑名称,但传统shell不支持这一点。如果一个shell实例维护PWD,而另一个子shell和不同的shell不知道PWD并执行cd,则会导致混淆;在这种情况下,PWD指向错误的目录。使用``pwd ' rather than

    库尔迪尔 保证在 Make 密码 可以 继承自贝壳,应首选前者。