Переменные среды также характерны для каждого процесса.
То, как вы вызываете osascript
со строкой в одинарных кавычках, говорит исходному экземпляру bash не заменять имена переменных. Фактически он отправляет "cd $PROJECT_DIR"
на osascript
, что отправляет cd $PROJECT_DIR
на терминал.
Но $PROJECT_DIR
не установлен в процессе получения bash - тот, который работает в вашем окне терминала. Вы можете убедиться в этом, добавив строку типа do script "set" in window 1
или do script "echo $PROJECT_DIR" in window 1
.
Если вы заключите часть скрипта с именем переменной в двойные кавычки, оригинальный процесс bash заменит вместо этого значение $ PROJECT_DIR:
osascript -e 'tell app "Terminal"
do script "pwd"
do script "cd '"$PROJECT_DIR"'" in window 1
do script "ls" in window 1
do script "./RunTests.pl" in window 1
end tell'
(синтаксис, предложенный CharlesDuffy)