Поскольку вы передаете my_binary
в качестве аргумента скрипту, я предполагаю, что вы хотите, чтобы скрипт (а) установил переменные среды, а затем (б) вызвал команду, которую вы ему отправили.
Один из способов сделать это:
#!/bin/bash
ENV_1=firstparam ENV_2=secondparam "$@"
«$ @» расширяется до списка аргументов, которые вы передали скрипту.
Если вы установите такие переменные, они будут унаследованы в среде любой команды, которую вы запускаете в той же командной строке , но не с помощью любых последующих команд.
Если вы хотите выполнить более одной команды с этими переменными среды, вы можете сделать :
#!/bin/bash
export ENV_1=firstparam
export ENV_2=secondparam
some_command
some_other_command
Тогда $ENV_1
и $ENV_2
появятся в среде some_command
и some_other_command
, но не в среде вашей оболочки после set_params.sh
завершается.
Если вы хотите, чтобы сценарий устанавливал переменные среды, которые будут доступны в вашей интерактивной оболочке, вам нужно будет вызвать его с помощью . ./set_params.sh
или source ./set_params.sh
. (И в этом случае вам не нужен #!/bin/bash
вверху, поскольку он будет выполняться в вашей текущей оболочке.)