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


111

我想做的是找到当前的工作目录并将其保存到变量中,以便我可以运行export PATH=$PATH:currentdir+somethingelse。我不确定它们是否默认包含cwd的变量。

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


所以将其保存到变量中,我将执行mydir =。?
2012年

1
yup刚刚使用mydir =进行了测试。然后ls $ mydir-但是它是相对的,所以无论您在哪里运行它都将是pwd
mcalex

谢谢!让我们希望这对我
有用

哦,我有一些空间。tt $ {PWD}应该可以使用。哈哈。...
哎呀

Answers:


188

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

cwd=$(pwd)

就您而言,您可以执行以下操作:

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

1
由于某种原因,如果我更改为另一个目录,这cwd也会更新变量。就像pwd每次调用该函数一样... dpaste.de/Kn7F 如何避免这种情况?
tutuca

1
$CWD可能是您的Shell中的特殊(保留)环境变量。请改用其他名称,例如$CWD_MY_VAR
sampson-chen

使用反引号也是如此。
tutuca

1
为什么不只是使用"$PWD"
leetbacoon

28

我的.bash_profile中包含以下内容:

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

因此,无论何时我想记住一个目录,我都可以输入,例如在那标记

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


效果很好,但是对于带有空格的路径(例如“ Google云端硬盘”),您必须要做cd "$foo"的是读取整个路径
mercergeoinfo 2016年

3
要解决路径中的空格问题,请更改export $1=`pwd` export $1="`pwd`" ,然后在调用此类路径时使用cd "$foo"而不是cd $foo
mercergeoinfo 2016年

mercergeoinfo:严格来说,export $1="`pwd`"不需要用引号,因为在作业的右侧不会进行分词,尽管扩展的引号很容易习惯。
拉里

2
另请参见cdable_vars仅键入cd there
John Cummings

4

您的作业有额外的 $

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

3

对于相对的答案,使用.

测试:

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

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



0

另一种变体:

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

0

您可以使用shell内置变量PWD,如下所示:

export PATH=$PATH:$PWD+somethingelse
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.