脚本位置执行

时间:2015-03-09 14:20:46

标签: bash shell scripting

我一直在编写脚本,但总是使用固定目录(/ opt / mw / script)。 我需要更改它以便能够从任何目录执行脚本 我想我需要添加一个“。”在行的开头能够执行脚本吗?
例如./mw/script

这是对的吗?

感谢

2 个答案:

答案 0 :(得分:1)

您已经可以从具有该绝对文件路径的任何目录执行该脚本。它是相对文件路径(以./../开头),只能从特定目录执行。

答案 1 :(得分:0)

需要添加“。”如果脚本在当前目录中(例如./script),但如果脚本已在另一个目录(例如mw/script)内,则可选

另请注意,如果您的脚本包含对其他文件和目录的相对引用,则可能需要使用this trick从任何目录中正确引用它们。

例如,请考虑使用绝对路径的以下脚本:

#!/bin/bash

# lists all files in this directory
ls /opt/mw

如果按如下方式转换为相对路径:

#!/bin/bash

# lists all files in this directory
ls mw

然后,此脚本仅在您从其自己的目录(例如cd /opt/ && ./script)运行时才有效。

但是你可以像这样概括它:

#!/bin/bash

SCRIPT_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
# lists all files in this directory
ls $SCRIPT_DIR/mw

现在,即使从另一个目录执行脚本,脚本也能正常工作。