export ENV_VAR="/Applications/Android Studio.app"
слід встановити змінну належним чином, але, ймовірно, програма / скрипт, який використовує цю змінну, не цитує її належним чином. Якщо ви можете зрозуміти, що використовує змінну, можливо, виправити сценарій / програму.
Першим моїм припущенням було б те, що змінна середовища використовується скриптом оболонки, який робить щось на кшталт:
somecommand $ENV_VAR/subdir/filename
Проблема виникає через те, що оболонка розширить змінну, а потім виконає розбиття слів - тобто вона розділиться /Applications/Android Studio.app/subdir/filename
на два аргументи: /Applications/Android
і Studio.app/subdir/filename
. Зауважте, що вбудовування вхідних значень або лапок у значення змінної не робить нічого корисного, оскільки оболонка обробляє лапки та уникає перед виконанням змінних підстановок. Таким чином, якби ви використовували export ENV_VAR="/Applications/Android\ Studio.app"
, він би розділився на /Applications/Android\
і Studio.app/subdir/filename
; якби ви використовували export ENV_VAR="'/Applications/Android Studio.app'"
його, було б розділено на '/Applications/Android
і Studio.app/subdir/filename'
.
Рішення полягає в тому, щоб поставити подвійні лапки навколо змінної посилання, як це:
somecommand "$ENV_VAR/subdir/filename"
що сповіщає оболонку не виконувати розділення слів після заміни, усуваючи проблему.
Зауважте, що також можливо, що це щось інше, ніж скрипт оболонки або сценарій оболонки, який робить щось складніше, як використання змінної для побудови іншої змінної, і, можливо, залежно від розбиття слів, коли використовується ця змінна. Виправлення подібного роду використання може забруднитися.