РЕДАКТИРОВАТЬ :Кажется, вы не можете экспортировать массивы в bash. Возможно, вам потребуется экспортировать функцию, которая настраивает массив, или что-то подобное.
Вы должны использовать массив, иначе аргументы с пробелами будут расширяться до нескольких слов.
export MY_ARGS=("$@")
foo --bar "${MY_ARGS[@]}"
Если сценарий использует относительный путь для поиска файлов и/или каталогов, то его текущий рабочий каталог должен быть правильным, чтобы он мог их найти.
Вы можете изменить текущий рабочий каталог с помощью команды cd
. Если первая команда в файле — это команда cd
, которая изменяет каталог на абсолютный путь, из которого ожидается выполнение сценария, то пути, указанные далее в сценарии, будут правильными.
Например:
#!/bin/bash
cd /some/path/where/we/expect/to/be || exit 1
# (rest of script here)
Это привело бы к изменению каталога (или преждевременному выходу из сценария, если это было невозможно )до выполнения остальной части сценария.
Дополнительным преимуществом этого является то, что вы можете разместить скрипт в любом удобном для вас месте.
Другой способ решить эту проблему — изменить все пути в сценарии на абсолютные пути.