Схоже, ви не зробили це правильно.
Я підозрюю, що ви намагаєтесь зробити третю справу, але використовуєте неправильний синтаксис. П'ять поширених помилок, які можуть призвести до помилок, таких як те, що ви бачите:
Використання пробілів замість =. export NAME valueнеправильно; valueпотім інтерпретується як ім'я наступної змінної для експорту.
(Це відбувається тому export NAME1 NAME2 , що правильний синтаксис для експорту кількох змінних.)
Розміщення пробілів навколо =. У багатьох мовах програмування більшу частину часу дійсно і стилістично віддано перевагу операторам з пробілами. Але призначати значення змінній у скрипті оболонки (або іншій ситуації, коли ви видаєте команди оболонки), це заборонено. NAME = value(у exportкоманді чи іншим способом) не працюватиме; ви повинні використовувати NAME=value.
( export NAME = valueНамагається експортувати змінні з ім'ям NAME, =і value. До щастя , це ніколи не з'являється , щоб добитися успіху мовчки , тому що спроби експортувати змінну =є синтаксичної помилкою. На відміну export NAME= valueз'явиться на роботу, але не призначає valueна NAME--instead, він привласнює порожній, рядок нульової довжини до NAMEта експортує його та окремо експортує змінну value. Обидва є загальними помилками.)
Розділення частин значення змінної пробілами. Змінні середовища можуть містити пробіли, але на практиці вони рідко використовуються як роздільники полів у змінних середовища. Коли одна змінна навмисно містить кілька шляхів, зазвичай :їх використовують для їх розділення.
Не цитувати пробіли при призначенні змінних. Іноді значення змінної середовища повинно містити пробіл. Наприклад, це може бути назва каталогу, який дійсно містить пробіл. У такому випадку потрібно навести будь-які пробіли.
Один із способів зробити це - передувати їм \. Див. Як я можу захистити дужки, передані команді CD? і неможливо видалити файл для отримання інформації про інші способи - застосовуються методи, представлені у відповідях, навіть якщо жодне питання не стосується присвоєння змінним середовища.
Наприклад, ось кілька способів експорту змінної середовища SILLYPATHзі значенням /home/ek/silly name/bin:
export SILLYPATH=/home/ek/silly\ name/bin
export SILLYPATH='/home/ek/silly name/bin'
export SILLYPATH="/home/ek/silly name/bin"
Часто, коли папка, яку ви повинні використовувати в оболонці або призначити для широко використовуваної змінної середовища, містить пробіл, можливо, виграш від перейменування. (Але іноді це недоцільно або небажано.)
Призначення та / або експорт змінної, коли взагалі нічого не потрібно було робити. Це свого роду мета-помилка; конкретна технічна проблема часто є одним із перерахованих вище, але рішення полягає в тому, щоб позбутися від правопорушної лінії чи якоїсь її частини, а не виправити її. .bashrcЗвичайно, не видаляйте без розбору код . Але exportможе бути випадково доданий або ненавмисно в ньому більше коду, ніж було призначено. Наприклад, припустимо, ви мали намір написати:
echo 'export PATH=~/some.bin:"$PATH"' >>~/.bashrc; . ~/.bashrc
Це додасться .bashrc, а потім повторно джерело. Але припустимо, ви натомість написали:
echo 'export PATH=~/some.bin:"$PATH" . ~/.bashrc' >>~/.bashrc # WRONG!
Тоді ваша exportкоманда не просто експортує збільшене значення PATH, але й намагатиметься експортувати змінні з ім'ям .і , що не є тим, що потрібно. Оскільки вони містять символи, заборонені в назвах змінних, ви отримуватимете помилку щоразу, коли запускатимете нову інтерактивну оболонку bash./home/your-username/.bashrc
Щоб уникнути цієї проблеми, я пропоную редагування .bashrcв редакторі (наприклад, nano ~/.bashrc, gedit ~/.bashrc) , а не перенаправляти висновок в кінці його з >>.