使用 Bash 将当前目录保存在变量中?
Posted
技术标签:
【中文标题】使用 Bash 将当前目录保存在变量中?【英文标题】:Save current directory in variable using Bash? 【发布时间】:2012-10-27 19:42:54 【问题描述】:我要做的是找到当前工作目录并将其保存到一个变量中,这样我就可以运行export PATH=$PATH:currentdir+somethingelse
。我不完全确定他们是否有一个默认包含 cwd 的变量。
如何
【问题讨论】:
所以要将它保存到变量中,我会执行 mydir=. ? 是的,刚刚使用 mydir= 进行了测试。然后 ls $mydir - 但它是相对的,所以无论你在哪里运行它都会是密码 哦,我有一些空格。 t.t $PWD 应该有效。哈哈。 ...哎呀 Getting current path in variable and using it、How to get a variable to have the current dir path? 等可能重复 【参考方案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";
【讨论】:
以上是关于使用 Bash 将当前目录保存在变量中?的主要内容,如果未能解决你的问题,请参考以下文章