Я страдаю от действительно странной проблемы на Snow Leopard. В моем терминале, я написал два сценария:OSX экспортированные переменные среды, не унаследованные в дочернем процессе
Первое:
#script-1.sh
export MY_VAR="This is my variable"
Второй сценарий:
# script-2.sh, having +x permission
#!/bin/bash
echo $MY_VAR
В терминале, если источник скрипт-1, а затем вызвать скрипт-2 как дочернего процесса, не отображается выход:
$> source script-1.sh
$> echo $MY_VAR
This is my variable
$> . script-2.sh
This is my variable
$> ./script-2.sh
$>
Любая идея, что здесь не так? Я пробовал тот же сценарий в Windows с помощью Cygwin, и там он работает так, как ожидалось - на OSX кажется, что дочерний процесс вообще не знает $MY_VAR
.
Я думаю, что 'script-1.sh' не выполняется в дочернем процессе. Но я обнаружил, что следующее работает как обходное решение: '$> sh -c". Script-1.sh && ./script-2.sh "' – lef
Ваше обходное решение в основном аналогично вашему примеру. Помните, что если скрипт-1 не работает, он не выполнит скрипт-2. – Kalicz