两个发行版(Arch 和 Manjaro 与 Mint)的 bash 位于不同的目录中。我怎样才能在 bash 脚本中适应这个?

两个发行版(Arch 和 Manjaro 与 Mint)的 bash 位于不同的目录中。我怎样才能在 bash 脚本中适应这个?

我最近主要使用 Manjaro 和 Arch,但我正在尝试在 Mint 上调试一些可能的硬件问题。

我有许多 bash 脚本在 mint 中不再工作,因为它们以 开头#!/usr/bin/bash,但 Mint 的 bash 位于/bin/bash。有没有办法合并某种重定向而不必更改我的所有脚本?

例如,我为开始练习而编写的第一个脚本就是这样:

#!/usr/bin/bash -x
cmatrix -bC red

删除该/usr部分可以让它在 Mint 中正常运行,但是有没有办法保留相同的脚本并在两个发行版中运行它?

答案1

Stack Overflow 上有相关的 Q&A,参见首选的 Bash shebang 是什么?,但我在这里找不到好的。

如果您希望脚本在、、等bash上的任何位置找到,请使用PATH/bin/usr/bin

#!/usr/bin/env bash

(这假设/usr/bin/env存在。)

但在大多数 Linux 发行版上,包括您提到的发行版,它都可以安全使用

#!/bin/bash

一些发行版/usr/bin/bash,但这就是结果/usr合并”-/bin现在/usr/bin这些发行版中具有相同的内容。

答案2

以下将需要进行一次更改。 #!/usr/bin/env bash将在您的 PATH 中搜索 bash。不过您必须set -x单独进行此操作。

相关内容