Як я можу встановити змінну середовища для користувача, яка містить символ пробілу?


0

Я хотів би додати змінну середовища для конкретного облікового запису, де в цій змінній є пробіл. Схоже, що редагування .bash_profile, як показано нижче, не працює:

export ENV_VAR=“/Applications/Android Studio.app“

і ні:

export ENV_VAR=“/Applications/Android\ Studio.app“

Мені доведеться погодитися зі зміною назви пакету додатків, що не є кращим.

Відповіді:


1

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"

що сповіщає оболонку не виконувати розділення слів після заміни, усуваючи проблему.

Зауважте, що також можливо, що це щось інше, ніж скрипт оболонки або сценарій оболонки, який робить щось складніше, як використання змінної для побудови іншої змінної, і, можливо, залежно від розбиття слів, коли використовується ця змінна. Виправлення подібного роду використання може забруднитися.


Ах зрозумів. Поряд із цим я зрозумів із вашої відповіді, що мій текстовий редактор використовує фігурні лапки, а не прямі. Всі сортовані!
andrewb
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.