首先我们先分清几个概念:/etc/profile不建议随意修改这个文件的全局(public)配置,系统所有用户都会看这个登录时的文件。修改此文件将影响系统的所有用户。所以如果你修改了/etc/profile,你必须重启你的修改才能生效,而且这个修改对每个用户都会生效。#/etc/profile#系统范围的环境和启动程序,用于登录设置#功能和别名进入/etc/bashrc#除非您知道自己在做什么,否则更改此文件不是一个好主意。最好在#/etc/profile.d/中创建一个custom.shshell脚本来对您的环境进行自定义更改,因为这#将防止在将来的更新中需要合并。/etc/bashrc系统级环境变量[Deprecated]全局(public)配置,系统所有用户在执行bashshell时都会读取这个文件。修改该文件会影响系统所有用户的bashshell配置。如果想对所有使用bashshell的用户修改某个配置,并且在以后打开的bash中生效,可以修改这个文件。修改这个文件不需要重启,只需要重新打开一个bashshell就可以生效。#/etc/bashrc#系统范围的函数和别名#环境的东西进入/etc/profile#除非你知道你在做什么,否则更改这个文件不是一个好主意。最好在#/etc/profile.d/中创建一个custom.shshell脚本来对您的环境进行自定义更改,因为这#将防止在将来的更新中需要合并。~/.profile或~/.bash_profile用户级环境变量Unix/Linux有两个profile文件:/etc/profile:是一个全局的profile文件,设置后会影响所有用户。~/.profile或~/.bash_profile是针对特定用户的,可以为用户配置自己的环境变量。~/.profile仅在Unix上可用;Linux下有~/.bash_profile(Linux下没有~/.profile文件)~/.profile或/.bash_profile是隐藏文件,需要用ls-a查看。~/.profile在Debian/Ubuntu上~/.bash_profile在CentOS/Fedora/RedHat上。用户可以在profile文件中添加环境变量,比如ORACLE_HOME、HOME……再次登录后,这些环境变量就会被设置。每次都手动设置。本地(私有)配置,该文件由系统的当前用户在执行bashshell时读取。通过修改这个文件,只会影响系统当前用户的bashshell配置。每个用户都可以使用这个文件来输入专供自己使用的shell信息。当用户登录时,该文件只执行一次!/etc/profile对所有用户有效,~/.bash_profile只对当前用户有效。这个文件类似于/etc/profile,需要重启才能生效,但是有时候.bash_profile文件中的环境变量并没有起到作用。这时候可以查看一下你在MacOSX上使用的是什么Shell?~echo$SHELL/bin/zshmac上安装zsh时,需要修改~/.zshrc中的环境变量,对于例子:exporthttp_prox=http://10.199.75.12:8080exporthttps_proxy=http://10.199.75.12:8080如果想让修改立即生效,需要执行source~/.zshrc~/.bashrcor~/.zshrc用户级环境变量每个用户在用户目录下都有一个.bashrc文件。这个文件主要是保存个人的一些个人设置,比如命令别名、路径等,定义了路径、语言、命令别名(使用rmdelete命令时,总是加上-i参数,需要确认由用户使用,当使用ls命令列出文件列表时,增加了颜色显示)。每次修改.bashrc后,立即使用source~/.bashrc(或.~/.bashrc)加载修改后的设置,使其生效。通常.bashrc在.bash_profile文件中显式调用。当你登录linux启动bash时,它会先读取/.bash_profile文件,这样/.bashrc就会被执行,你的个性化设置才会生效。至于~/.profile和~/.bashrc,它们都有自定义的功能。~/.profile可以设置用户独享的路径、环境变量等,登录时只能执行一次。bashrc也是一个用户专属的设置文件,可以设置路径和命令别名,每次执行shell脚本都会用到。Bash登录(登录)时,Profile的执行顺序:先执行/etc/profile,然后bash会检查用户的HOME目录下是否有.bash_profile或.bash_login或.profile。如果有,其中一个将被执行。执行顺序为:.bash_profilefirst>.bash_loginsecond>.profile最后,根据用户账号读取~/.bashrc
