使用 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 将当前目录保存在变量中?的主要内容,如果未能解决你的问题,请参考以下文章

linux终端命令行前缀设置为“当前目录”(非绝对路径)

Linux&bash闯关CTF

如何使用 bash 脚本重命名当前目录及其子目录中的文件?

使用 Bash 将给定当前目录的绝对路径转换为相对路径

临时更改 bash 中的当前工作目录以运行命令 [重复]

mac怎么配置环境变量