获取终端的工作目录,而不是脚本

获取终端的工作目录,而不是脚本

我有一个脚本,我想根据用户(我)所在的目录创建文件(可以从命令行调用)。但是,它会在脚本所在的同一目录中创建文件。我如何更改脚本,使其在与终端相同的目录中创建文件?

注意:在脚本内部执行该命令pwd时将打印脚本的工作目录,而不是终端。

答案1

您是否在脚本中更改目录?在 bash 和脚本中,我认为 pwd 实际上应该返回该用户的工作目录,而不是脚本本身的位置。

例如

echo "touch make_a_file" > make_a_file.sh
~/ $ ls
make_a_file.sh
~/ $ mkdir -p make/some/directories
~/ $ cd make/some/directories
~/make/some/directories $ sh ../../../make_a_file.sh
~/make/some/directories $ ls
make_a_file

如您所见,在安装了当前版本 bash 的 ubuntu 12.10 中,我创建了一个脚本,从另一个目录(从 make/some/directories 路径内部)运行它,新文件是在我所在的目录中创建的……而不是脚本的位置。确保您没有在脚本中的任何位置移动,或者显示一些代码来查看发生了什么。

相关内容