【问题标题】:Save current directory in variable using Bash?使用 Bash 将当前目录保存在变量中?
【发布时间】:2012-10-27 19:42:54
【问题描述】:

我要做的是找到当前工作目录并将其保存到一个变量中,这样我就可以运行export PATH=$PATH:currentdir+somethingelse。我不完全确定他们是否有一个默认包含 cwd 的变量。

如何使用 Bash 将当前目录保存在变量中?

【问题讨论】:

标签: bash variables directory


【解决方案1】:

这会将当前工作目录的绝对路径保存到变量cwd

cwd=$(pwd)

在你的情况下,你可以这样做:

export PATH=$PATH:$(pwd)+somethingelse

【讨论】:

  • 由于某种原因,如果我更改为另一个目录,这也会更新 cwd 变量。就像它每次都调用 pwd 函数... dpaste.de/Kn7F 我怎样才能避免这种情况?
  • $CWD 可能是您的 shell 中的特殊(保留)环境变量。请尝试使用其他名称,例如 $CWD_MY_VAR
  • 使用反引号也是如此。
  • 为什么不直接使用"$PWD"
【解决方案2】:

我的 .bash_profile 中有以下内容:

function mark {
    export $1=`pwd`;
}

所以任何时候我想记住一个目录,我都可以输入,例如标记那里

然后当我想回到那个位置时,我只需键入 cd $there

【讨论】:

  • 效果很好,但对于带有空格的路径,例如“Google 云端硬盘”您必须执行 cd "$foo" 才能读取整个路径
  • 要解决路径中的空格问题,请将export $1=`pwd` 更改为export $1="`pwd`" ,然后在调用此类路径时使用cd "$foo" 而不仅仅是cd $foo
  • mercergeoinfo:严格来说,export $1="`pwd`" 中的引号是不需要的,因为分词不会发生在分配的右侧,尽管扩展的引用很好习惯于一种习惯。
  • 另见cdable_vars,只需输入cd there
【解决方案3】:

你的作业有一个额外的$

export PATH=$PATH:${PWD}:/foo/bar

【讨论】:

    【解决方案4】:

    对于相对答案,请使用.

    测试:

    $ myDir=.
    $ ls $myDir
    $ cd /
    $ ls $myDir
    

    第一个ls 将显示当前目录中的所有内容,第二个将显示根目录中的所有内容 (/)。

    【讨论】:

      【解决方案5】:

      当前工作目录变量,即完整路径/home/dev/other

      dir=$PWD
      

      打印完整路径

      echo $dir
      

      【讨论】:

        【解决方案6】:

        在 BASH shell 上,您可以非常简单地运行:

        export PATH=$PATH:`pwd`/somethingelse
        

        无需将当前工作目录保存到变量中...

        【讨论】:

          【解决方案7】:

          另一种变体:

          export PATH=$PATH:\`pwd`:/foo/bar
          

          【讨论】:

            【解决方案8】:

            你可以使用shell内置变量PWD,像这样:

            export PATH=$PATH:$PWD+somethingelse
            

            【讨论】:

              【解决方案9】:

              类似于mark 的解决方案,但会检查一些变量。另外我不喜欢使用$variable,而是使用我保存在下面的相同字符串

              使用 save dir sdir myproject 保存您的文件夹/目录,然后使用 goto dir gdir myproject 返回该文件夹

              此外,检查原生pushd and popd 的工作原理,他们将保存当前文件夹,这对于来回切换非常方便。在这种情况下,您也可以在gdir myproject 之后使用popd 并再次返回

              # Save the current folder using sdir yourhandle to a variable you can later access the same folder fast using gdir yourhandle
              
              function sdir {
                  [[ ! -z "$1" ]] && export __d__$1="`pwd`";
              }
              function gdir {
                  [[ ! -z "$1" ]] && cd "${!1}";
              }
              

              另一个方便的技巧是将两个 pushd/popd 和 sdir 和 gdir 结合起来,您可以在 pushd 的 goto dir 函数中替换 cd。这使您在跳转到保存的文件夹时也可以飞回上一个文件夹。

              # Save the current folder using sdir yourhandle to a variable you can later access the same folder fast using gdir yourhandle
              
              function sdir {
                  [[ ! -z "$1" ]] && export __d__$1="`pwd`";
              }
              function gdir {
                  [[ ! -z "$1" ]] && pushd "${!1}";
              }
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2019-06-15
                • 2023-03-29
                • 2020-04-14
                • 2014-12-02
                • 1970-01-01
                • 2021-11-19
                • 1970-01-01
                • 2020-05-03
                相关资源
                最近更新 更多