【问题标题】:Shell script current directory?Shell脚本当前目录?
【发布时间】:2012-04-11 00:11:32
【问题描述】:

shell脚本的当前目录是什么?我从哪个当前目录调用它?还是脚本所在的这个目录?

【问题讨论】:

    标签: linux directory sh working-directory


    【解决方案1】:

    您可以通过在运行时检查pwd 的输出来自己执行此操作。 这将打印您当前所在的目录。不是脚本。

    如果您的脚本不切换目录,它将打印您从中运行它的目录

    【讨论】:

      【解决方案2】:

      shell 脚本的当前(初始)目录是您从中调用脚本的目录。

      【讨论】:

        【解决方案3】:

        如前所述,该位置将是调用脚本的位置。如果您希望脚本引用它的安装位置,这很简单。下面是一个 sn-p,它将打印 PWD 和安装目录:

        #!/bin/bash
        echo "Script executed from: ${PWD}"
        
        BASEDIR=$(dirname $0)
        echo "Script location: ${BASEDIR}"
        

        欢迎你

        【讨论】:

          【解决方案4】:

          大多数答案都会为您提供当前路径并且是上下文相关的。要从任何目录运行脚本,请使用以下 sn-p。

          DIR="$( cd "$( dirname "$0" )" && pwd )"
          

          通过在子shell中切换目录,我们可以调用pwd并获得脚本的正确路径而不管上下文。

          然后您可以将$DIR 用作"$DIR/path/to/file"

          【讨论】:

          • 你能解释一下发生了什么吗?当我的脚本同时运行超过 20 次时,我收到以下错误:....sh: fork: retry: Resource temporarily unavailable 该脚本由 OpenVPN 运行。 (在 nogroup 组和nobody 帐户下)
          【解决方案5】:

          要打印当前的工作目录,即 pwd,只需键入如下命令:

          echo "the PWD is : ${pwd}"
          

          【讨论】: