我有一个类型的目录结构
|--bringup-scripts
| |--prep.sh
|--scripts
| |--i2c0.func
| |--bit.func
prep.sh看起来像这样:
#!/bin/bash
. ../scripts/i2c0.func
i2c0.func看起来像这样:
#!/bin/sh
. ./bit.func
由于i2c0.func对bit.func存在依赖关系,如果我从bringup-scripts文件夹运行prep.sh,则会抛出错误说
./bit.func:没有这样的文件或目录
我该如何解决这个问题?
您可以做的是不使用相对路径,而是为prep.sh文件中的所有脚本定义一个起点,如下所示:
#!/bin/bash
export ROOT_DIR="$(dirname $PWD)"
. $ROOT_DIR/scripts/i2c0.func
你必须包括$ROOT_DIR
作为脚本目录中每个脚本的前缀,例如:
i2c0.func
#!/bin/sh
. $ROOT_DIR/scripts/bit.func
我不知道是否有标准方法可以做到这一点,但您可以尝试更改i2c0.func,如下所示:
#!/bin/sh
. ../scripts/bit.func
虽然注意prep.sh获取其调用者的工作目录,但只有当你从bringup-scripts/
或scripts/
运行它时它才会起作用。