gpt4 book ai didi

linux - 在 bash 脚本中包含相对路径中的二进制文件

转载 作者:太空宇宙 更新时间:2023-11-04 03:50:10 26 4
gpt4 key购买 nike

我有一个 project/bin/ 目录,该目录未包含在 PATH 中。它包含二进制文件 project/bin/oneproject/bin/two

bash 脚本位于 project/shell/script1/run.sh 中。现在,我想在 project/shell/script1/run.sh 脚本中使用 project/bin 文件夹中的二进制文件。我想要一个可以源码的全局脚本,并自动包含这些二进制文件。

因此,我创建了一个脚本project/bin/load_bin:

#!/usr/bin/env bash

$local_bin_one='./one'
$local_bin_two='./two'

在我的project/shell/script1/run.sh中,我执行脚本:

#!/usr/bin/env bash

source '../../bin/load_bin'

但是,当我尝试使用 $local_bin_one 时,出现文件未找到错误。这是因为 $local_bin_one 指向 ./one 而不是 ../../bin/one

问题:如何找到从 project/bin/load_bin 脚本本身调用 source '../../bin/load_bin' 的脚本的路径?

最佳答案

您可以通过以下方式获取 Bash 脚本的路径:

${0%/*}

也就是说,采用$0(argv[0],调用脚本时使用的完整路径和文件名),并去掉最后一个斜杠及其后面的内容(相当于$(dirname "$0"))。

然后您可以执行以下操作:

mydir=${0%/*}
source "$mydir/../../bin/load_bin"

或者你甚至可以这样做:

cd ${0%/*}
source '../../bin/load_bin'

关于linux - 在 bash 脚本中包含相对路径中的二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26605694/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com