如何在OS X Mavericks上恢复.bash_profile?

时间:2014-09-05 13:37:57

标签: bash shell path .bash-profile

我一直在我的MAC上设置新软件(mongoDB,maven等)。 我想我覆盖了新的PATH时覆盖了原来的.bash_profile。 现在,bash shell中的大多数基本命令都无法正常工作。

-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

以下是我在shell中输入“echo $ 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恢复正常?

基于其他评论,我在shell中输入以下内容,它看起来像是再次工作。但是,当我重新启动终端时,它会一次又一次地返回“命令未找到”模式。

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

2 个答案:

答案 0 :(得分:1)

您似乎认为export将在您的文件中获取PATH的当前值,并将其附加到当前环境中的值。但是,export命令只执行以下操作:使用export属性标记名称 PATH。在为子进程设置环境时,shell会使用export属性获取所有名称的当前值,并将它们添加到该环境中。

请注意,一旦进程启动,导出属性集(无论是从父级继承还是从本地设置)和没有变量的变量之间没有区别;它们都是shell变量。

当您将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

答案 1 :(得分:0)

最终问题是export PATH=/Users/sychung/mongoDB/bin,与设置PATH的所有其他行不同,它不包含当前$PATH值,因此删除了默认{{1}条目。使该行看起来像其他行(在其中的某处包含PATH),事情应该有效。