.profile
和之间有什么区别.bash_profile
,以及何时配置哪个?
即如果我配置了.bash_profile
,我还需要配置吗.profile
?
答案1
假设是您的默认 shell,其差异在手册页 ( )bash
中有描述:bash
man bash
When bash is invoked as an interactive login shell, or as a non-interac-
tive shell with the --login option, it first reads and executes commands
from the file /etc/profile, if that file exists. After reading that file,
it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile, in that
order, and reads and executes commands from the first one that exists and
is readable. The --noprofile option may be used when the shell is started
to inhibit this behavior.
手册页中详细介绍了 POSIX-shell 兼容模式,这就是它的来源.profile
。阅读整个手册页部分以了解所有详细信息。
答案2
如果您配置了.bash_profile
,则您不需要再配置.profile
。
我喜欢保留自己的别名和命令,.profile
这样如果我搞乱了任何东西,我知道我可以随时删除它.profile
而不会影响整个系统或其他修改的应用程序.bash_profile
(如 MacPorts)。
要使用.profile
,您可能需要source ~/.profile
在您的文件中包括该行.bash_profile
以便.profile
读取该文件(参见Ned Deily的回答)。
答案3
当您获得正常的 shell 进程时,bash 会执行 .profile -- 例如,您打开一个终端工具。.bash_profile 由 bash 为登录 shell 执行 -- 例如,当您远程 telnet/ssh 进入您的计算机时。例如,如果您远程 ssh 进入一台机器(假设您打开一个 X 终端),您将首先执行 .bash_profile。如果在该 XTerminal 中键入“xterm”并生成另一个 X 终端,则将为 XTerminal 的第二个实例执行 .profile。这些文件位于您的主目录 (~)。如果我没有记错的话,默认情况下它们都执行 ~/.bashrc,因此您可以编辑它以配置登录和非登录 shell 的通用设置/变量(例如设置 PATH、一些别名/快捷方式等)。您可能偶尔想为这两个 shell 配置某些不同的东西,但我从未遇到过这种需要 -- 但是,这种可能性是存在的。
答案4
为了快速而简单的配置(您不想让事情复杂化),只需在您的 ~/.profile 中配置所有内容。只有当您遇到一些麻烦时(但可能永远不会)才了解有关 .bash_login 或 .bash_profile 的更多信息;)
我也在使用 OS X,从来不需要 .bash_profile 或 .bash_login,只使用 .profile,但你的情况可能会有所不同......