Я змінив змінну "ДОМАШНЯ" і тепер не можу знайти "~ / .bash_profile", щоб змінити її назад


15

Я возився зі змінними середовища на своєму Mac, намагався навчитися їх використовувати, і я використав команду, nano ~/.bash_profileде потім додав рядок HOME=/Users/MyCompName/Desktopдля оновлення домашньої змінної.

Ця зміна спрацювала і її можна помітити, коли я використовую printenvдля перегляду всіх змінних середовища, але коли я повернувся до зміни, HOMEя, здається, ~/.bash_profileбільше не міг знайти . Куди воно пішло?


9
В основному ~означає$HOME
el.pescado

6
... тож якщо ви переосмислите $HOME, також ~буде переосмислено
el.pescado

Відповіді:


32

Це там же.

Перш ніж зміна ~розшириться на щось подібне /Users/YourUserName, оболонка знайде вас .bash_profileтам. Після отримання джерела файлу ~розширюється на інший шлях, тому ~/.bash_profileбільше не вказує на відповідний файл. Це тому, що в цьому контексті це ~означає $HOME.

Якщо ви знаєте повний шлях до власного домашнього каталогу, ви можете використовувати його замість ~. У Mac це, мабуть, виглядатиме так:

nano /Users/YourUserName/.bash_profile

Або дозвольте Bash шукати домашній каталог в базі даних користувачів, а не просто дивитися $HOME. Для цього не потрібно нічого пам’ятати:

nano ~YourUserName/.bash_profile

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


Дивовижно мені вдалося знову знайти його спасибі! Ви б не хотіли детальніше зупинитися на тому, що ви маєте на увазі під "після отримання файлу"? Мені невідомо, що означає файл, який можна отримати
Метт

6
@Matt .bash_profileмає форму сценарію Bash. Ви можете запустити сценарій або його джерело. Запуск означає створення підзаголовка та виконання скрипту рядок за рядком. Sourcing означає виконання сценарію в поточній оболонці. Деякі завдання, які мають на меті вплинути на поточну оболонку, не можуть бути виконані в нижній оболонці; Зміна змінної для поточної оболонки - одна з них. Ось чому деякі файли розміщуються, а не виконуються в підпакеті. Для ручного джерела використання файлу використовується . file( .задається POSIX) або source file( sourceце розширення, яке не є POSIX, яке розуміється кількома оболонками).
Каміль Маціоровський


2
Якщо ви (Метт) не знаєте, де раніше був ваш домашній каталог, можете скористатися ним nano ~YourUserName/.bash_profile. Це буде шукати ваш домашній каталог в базі даних користувачів, а не просто дивитися на $ HOME.
Стиг Хеммер

1
@StigHemmer Відповідь - це вікі спільноти. Ваш корисний коментар засвоєний. Дякую.
Каміль Маціоровський
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.