linux 不使用bash,linux-如何从提供其他Bash脚本的任何目录Bash脚本执行(不使用路径变量)...

我不尝试通过将脚本添加到我的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始终是绝对路径.

标签:bash,linux

来源: https://codeday.me/bug/20191108/2006483.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值