2014-09-05 3 views
1

Я устанавливаю новые программные средства (mongoDB, maven и т. Д.) На свой MAC. Я думаю, что перезаписал оригинальный .bash_profile, в то время как я worte новый PATH. И теперь большая часть основной команды в оболочке bash не работает.Как восстановить .bash_profile на OS X Mavericks?

-bash: ls: command not found 

Следующий мой .bash_profile открыт в текстовом редакторе.

PATH=$PATH:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin 
export PATH 

export PATH=/Users/sychung/mongoDB/bin 

#maven PATH 
export M2_HOME=/Users/sychung/apache-maven-3.1.1 
export PATH=$PATH:$M2_HOME/bin 

# Setting PATH for Python 3.4 
# The orginal version is saved in .bash_profile.pysave 

PATH="/Library/Frameworks/Python.framework/Versions/3.4/bin:${PATH}" 

# Setting PATH for Python 2.7 
# The orginal version is saved in .bash_profile.pysave 
PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}" 
export PATH 

# Setting PATH for Python 2.7 
# The orginal version is saved in .bash_profile.pysave 
PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}" 
export PATH 

# Setting PATH for Python 2.7 
# The orginal version is saved in .bash_profile.pysave 
PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}" 
export PATH 

И следующий список PATH, когда я напечатал в «эхо» $ PATH в оболочке.

/Library/Frameworks/Python.framework/Versions/2.7/bin:/Library/Frameworks/Python.framework/Versions/2.7/bin:/Library/Frameworks/Python.framework/Versions/2.7/bin:/Library/Frameworks/Python.framework/Versions/3.4/bin:/Users/sychung/mongoDB/bin:/Users/sychung/apache-maven-3.1.1/bin 

Что мне делать, чтобы заставить bash вернуться к нормальной жизни?

Основываясь на других комментариях, я набрал следующее в оболочке, и он снова выглядел как работа. Однако, когда я перезапускаю терминал, он снова и снова возвращается к режиму «команда не найден».

PATH=$PATH:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin 
export PATH 
+0

Вам только нужно экспортировать переменную, а не каждый раз, когда вы его. –

+0

У вас есть куча дубликатов дополнений к 'PATH' там тоже, что вы, вероятно, можете очистить. (Также вам нужно/иметь оба python 2.7 и 3.4?) –

ответ

1

Вы, кажется, думаете, что export возьмет текущее значение PATH в вашем файле и добавит его к значению, находящемуся в данный момент в среде. Однако команда export выполняет только одно: это отмечаетимяPATH с атрибутом экспорта. Когда пришло время настроить среду для подпроцесса, оболочка принимает текущее значение всех имен с атрибутом экспорта и добавляет их в эту среду.

Обратите внимание, что как только процесс начинается, нет никакой разницы между переменными с установленным атрибутом экспорта (независимо от того, наследуется ли он от родителя или локально) и переменными без; все они являются просто переменными оболочки.

Когда вы устанавливаете PATH в один каталог, который перезаписывает текущее значение PATH и теряет все предыдущие каталоги, которые вы включили.

Правильный способ добавить каталоги в путь является

PATH=$PATH:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin 
export PATH 

PATH=$PATH:/new/dircetory 
PATH=$PATH:/another/new/one 
PATH=/a/very/important/one:$PATH # you can prepend as well 
0

В конечном счете проблема export PATH=/Users/sychung/mongoDB/bin, которая, в отличие от всех других линий, которые устанавливают PATH, также не включает в себя текущее $PATH значения и поэтому удаляет параметр по умолчанию PATH записи. Сделайте эту линию похожим на другие строки (в ней должно быть $PATH), и все должно работать.

Смежные вопросы