【发布时间】:2017-07-27 08:13:38
【问题描述】:
我正在尝试使用 pushd 进入目录
#!/bin/bash
function cloneAll {
[ -d ~/mapTrials ] || mkdir ~/mapTrials
pushd '~/mapTrials/'
echo $(pwd)
popd
}
echo $(pwd) 为我提供了与我调用脚本相同的工作目录。
我在其他 SO 答案中读到 pushd 仅适用于子进程,并且我必须为其创建别名。我也这样做了。
我尝试执行诸如mkdir 之类的命令来查看它的创建位置。它是在我调用脚本的目录中创建的,而不是在pushd 中指定的目录中创建的。
我如何让它工作?如何进入 shell 脚本中的特定目录,然后在该目录中执行命令??
提前致谢。
【问题讨论】:
-
如果目录
~/mapTrials不存在且无法创建pushd可能会失败。 (可能的原因:缺少创建目录的权限。或 file~/mapTrials已经存在)实际上,pushd打印了一个错误。但是,您可以检查$?以获取最后一个命令的结果。如果pushd失败,则它不是 0(在我的情况下为 1)。 -
在过去,我们有如此奇怪的效果,因为我们使用 NFS(在具有 SGI/Irix 和 PC/Linux 服务器的异构网络中)偶尔无法保持挂载的网络目录同步。但这现在应该不再是问题了。
-
@Scheff 函数中的第一行确保目录始终存在
标签: bash shell directory pushd