我一直在编写脚本,但总是使用固定目录(/ opt / mw / script)。
我需要更改它以便能够从任何目录执行脚本
我想我需要添加一个“。”在行的开头能够执行脚本吗?
例如./mw/script
这是对的吗?
感谢
答案 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
现在,即使从另一个目录执行脚本,脚本也能正常工作。