В двух дистрибутивах (Arch и Manjaro vs Mint) bash находится в разных каталогах. Как я могу разместить это в сценарии bash?

Если вы хотите, чтобы компоновщик нашел библиотеку в необычном месте, вам нужно использовать параметр -L, чтобы указать каталог, в котором находится библиотека.

Если вы хотите, чтобы компоновщик времени выполнения находил ту же библиотеку во время выполнения, используйте -Rдля компоновщика, чтобы добавить тег RUNPATHв двоичный файл.

ldconfig использовался в 1980-х годах с форматом a.out, поскольку у него не было свойства RUNPATH, которое было добавлено к ELF.

0
17.06.2020, 02:18
2 ответа

Есть соответствующие вопросы и ответы по переполнению стека, см. Какой 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
18.03.2021, 23:27

Следующее потребует однократного изменения. #!/usr/bin/env bashбудет искать bash в вашем PATH. Однако вам придется set -xотдельно.

0
18.03.2021, 23:27

Теги

Похожие вопросы