我不尝试通过将脚本添加到我的Path变量来从任何目录执行Bash脚本.
我希望能够使用该文件的目录路径从任何目录执行脚本……但是我要执行的文件源于其他文件,这就是问题所在.
如果我在带有两个脚本myFunctions.sh和sourceFunctions.sh的目录文件中
sourceFunctions.sh
#!/bin/bash
source ./myFunctions.sh
echoFoo
myFunctions.sh
function echoFoo()
{
echo "foo"
}
我可以运行myFunctions.sh,并且foo将打印到控制台,但是如果我进入目录并运行myFunctions.sh,则会收到错误消息
cd ..
file/sourceFunctions.sh
-bash: doFoo.sh: command not found
除非我将sourceFunctions.sh中的源文件/myFunctions.sh更改为源文件/myFunctions.sh.
那么,如何才能独立于工作目录进行源操作,以便可以从任何所需的工作目录中运行sourceFunctions.sh?
谢谢
解决方法:
你有正确的主意.并不需要那么复杂:
source `dirname $0`/myFunctions.sh
我经常在脚本顶部计算“ HERE”:
HERE=`dirname $0`
然后根据需要在我的脚本中使用它:
source $HERE/myFunctions.sh
要注意的一件事是$HERE通常是相对路径.实际上,它将是您实际用于运行脚本的任何路径,即“.”.如果您没有提供路径.因此,如果您在脚本中“ cd”,则$HERE将不再有效.如果这是一个问题,则有一种方法(想不到的话)可以确保$HERE始终是绝对路径.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。