如何使用包含其他文件路径(无论其位置如何)的脚本?

如何使用包含其他文件路径(无论其位置如何)的脚本?

我有一个脚本存储在嵌套在其他目录深处的特定目录中。

a/long/path/to/the/script.sh

我从桌面创建了到该脚本的硬链接,因此可能更容易访问。

但是,在执行桌面硬链接时,脚本中编程的其他文件的路径将不起作用。

我现在收到“没有这样的文件或目录。”错误。

我不想为这些文件创建额外的符号链接,因为它看起来很混乱。

我不知道该怎么办,请帮忙。

答案1

如果脚本使用相对路径来定位文件和/或目录,则其当前工作目录必须正确才能找到这些文件和/或目录。

您可以使用命令更改当前工作目录cd。如果文件中的第一个命令是cd将目录更改为脚本期望执行的绝对路径的命令,则脚本中后面的路径将是正确的。

例如:

#!/bin/bash

cd /some/path/where/we/expect/to/be || exit 1

# (rest of script here)

这将在脚本的其余部分运行之前更改目录(如果不可能的话,则提前退出脚本)。

这样做还有一个额外的好处,即您可以将脚本放置在您认为方便保存的任何位置。

解决此问题的另一种方法是将脚本中的所有路径更改为绝对路径。

相关内容