.bash_profile 和终端命令的问题

.bash_profile 和终端命令的问题

我添加了一些数据到我的.bash_profile运行两个别名 ruby​​ 版本 19 和正确的 gems。一旦我添加了数据,我就无法再运行任何命令,例如Mac端口命令端口或要运行的命令伙伴文本伴侣。一旦我停用.bash_profile.bash_login甚至.bash_history一切都恢复正常了。.bash_history重新生成,不久之后我就.bash_profile恢复了急需的别名,但随后我失去了再次运行这些命令的选项。以下是所有这些文件的一些输出:

jaspersmbp:~ jasper$ cat .bash_profile
    alias ruby='/opt/local/bin/ruby1.9'
    alias gem='/opt/local/bin/gem'
jaspersmbp:~ jasper$ cat .bash_login
jaspersmbp:~ jasper$ cat .bashrc
    HISTFILESIZE=1000000000
    HISTSIZE=1000000
jaspersmbp:~ jasper$ cat .profile
    #Django path
    export PATH=/opt/local/bin:opt/local/sbin:/opt/local/lib/python2.4/site-packages/django/bin:$PATH
    # Apache alias
    alias apacherestart='sudo /opt/local/apache2/bin/apachectl -k restart'
    #Subversion OSX for Eclips Joomla Development
    export PATH=/opt/subversion/bin:$PATH
    #Test
    #echo $PATH
    ##
    # Your previous /Users/jasper/.profile file was backed up as /Users/jasper/.profile.macports-saved_2012-05-18_at_09:47:58
    ##
    # MacPorts Installer addition on 2012-05-18_at_09:47:58: adding an appropriate PATH variable for use with MacPorts.
    export PATH=/opt/local/bin:/opt/local/sbin:$PATH
    # Finished adapting your PATH environment variable for use with MacPorts.

有谁知道为什么.bash_profile激活会导致使用 mate 和 port 等命令?我真的需要.bash_profile工作,这样我就可以使用别名,并且我需要适用于各种软件的 MacPorts 端口命令。

答案1

Bash 读取~/.bash_profile它是否存在,~/.profile如果不存在。因此,当您创建 时~/.bash_profile,您的~/.profile不再被使用。与其他 shell 不同,您的别名并非特定于 bash,因此您不妨将它们放在~/.profile.

另外,您启动交互式登录 bash,bash 读取~/.bash_profile~/.profile(特定于 bash 的会话启动脚本,或通用 shell 会话启动脚本,如果不存在),但不读取~/.bashrc(交互式 bash 启动脚本)。因此,将这两行放入您的文件中~/.bash_profile以按应有的方式加载所有内容:

. ~/.profile
case $- in *i*) . ~/.bashrc;; esac

答案2

看起来 MacPort 正在生成您的配置文件,并搞乱您的PATH等等。解决此问题的最简单方法是自己动手 - 禁用与路径和别名相关的点文件的 MacPort 生成/创建,删除.bash_profile.profile文件,然后将以下内容附加到~/.bashrc文件中:

# define aliases
alias ruby='ruby1.9'
alias apacherestart='sudo apachectl -k restart'

# define hist properties
HISTFILESIZE=1000000000
HISTSIZE=1000000

# define path to programs
PATH=/opt/local/bin:opt/local/sbin:/opt/subversion/bin:/opt/local/apache2/bin/:/opt/local/lib/python2.4/site-packages/django/bin:$PATH

# define manpath
MANPATH=/opt/local/share/man:$MANPATH

# export env vars
export HISTFILESIZE HISTSIZE PATH MANPATH

启动一个新终端并运行echo $PATH以检查所有内容是否都在其中,然后测试安装在/opt/local/bin.由于上述语句中的所有目录PATH=现在都在您的目录中,因此PATH您不需要使用二进制文件的绝对路径的别名 - 例如,您不再需要别名,gem因为您只需运行gem.

更新:如果您~/.bashrc没有来源,请放入source ~/.bashrc干净的~/.bash_profile.

答案3

嗯,也许是有$PATH问题?前后检查过吗?

相关内容