Answers:
这.profile
是Bourne Shell的原始配置文件配置(又名sh
)。bash
,成为兼容Bourne的shell即可阅读和使用。在.bash_profile
另一方面,仅被读取bash
。它适用于与标准Bourne Shell不兼容的命令。
.profile
。例如,bash
和ksh
而不是csh
或tcsh
。并且zsh
提供sh
和csh
兼容性,因此它将读取.profile
和.login
以及zsh
特定的点文件。
原始sh
源于.profile
启动。
bash
将尝试.bash_profile
首先提供源,但是如果不存在,它将提供.profile
1。
请注意,如果bash
以开头sh
(例如/bin/sh
是的链接/bin/bash
)或以该--posix
标志开头,则它将尝试进行仿真sh
,并且仅读取.profile
。
脚注:
.bash_profile
,.bash_login
,.profile
也可以看看:
您知道UNIX世界中存在许多shell,但是其中大多数是:
/bin/sh
(发明人:斯蒂芬·伯恩)/bin/bash
发明人:Brian Fox,在GNU项目下)(强大的Shell)/bin/csh
发明人:Bill Joy,TCP / IP Stack的发明人)/bin/ksh
发明人:Bell Labs的David Korn)/bin/zsh
强大的shell)/bin/tcsh
源自C Shell)/bin/dash
源自Almquist shell(NetBSD项目下的Ash))(Dash源自lenny)但是您的问题是关于~/.bash_profile
和~/.profile
:
当您登录到UNIX计算机时,它会根据管理员在/etc/passwd
诸如以下这样的最后一个字段中选择的shell重定向到您的主目录:
mohsen:x:1000:1000:Mohsen Pahlevanzadeh,,,:/home/mohsen:/bin/bash
您的Shell运行,默认情况下,每个Shell都有一个针对login
和的设置文件logout
。当您登录上的bash,~/.profile
运行,当您logout
,~/.bash_logout
运行。
~/.bash_history
文件保留您的输入命令。
~/.login
登录时~/.logout
登出时~/.tcshrc
和~./bashrc
bash一样您可以将变量设置$histfile
为历史文件的名称,并将变量设置$history
为要保留的命令数。
确实,它是强大的外壳,如果您有空闲时间,请确保迁移到它。
除其他外壳程序外,Z外壳程序有许多配置文件和初始化文件,只是我这样写:
$ZDOTDIR/.zshenv
$ZDOTDIR/.zprofile
$ZDOTDIR/.zshrc
$ZDOTDIR/.zlogin
$ZDOTDIR/.zlogout
/tmp/zsh*
/etc/zshenv
/etc/zprofile
/etc/zshrc
/etc/zlogin
注意:如果未$ZDOTDIR
设置,则进行家庭设置。
注意:TENEX C shell是从C shell派生的。BSD支持C shell。如果您熟悉C语言编程,则应该感到舒服,因为其语法相似。
~/.login
~/.cshrc
~/.logout
注意:csh是旧的。请改用tcsh。
~/.profile
它是一个非常强大的shell,在GNU项目下诞生,由Bourne Shell分叉。
~/.bash_login
~/.bash_logout
~/.bashrc
~/.bash_profile
~/.bash_history
登录时,bash运行~/.bash_profile
并~/.bash_profile
运行~/.bashrc
。确实~/.bashrc
不是bash初始化文件,因为bash不会运行它。
死了 即使您使用时man sh
,也会看到的使用手册dash
。[编者注:有关内容dash
仅适用于Debian和基于Debian的发行版,如Ubuntu。]
~/.bash_profile
在bash ~/.profile
下工作,但在Bourne和Korn shell下工作。
登录shell只是可以通过ssh或在控制台登录的shell。非登录外壳是某人也无法登录的外壳。程序/系统服务通常使用非登录外壳。
至于你的第三点。.bashrc
在外壳的每个实例上执行都是正确的。但是.bash_profile
仅在登录时使用。因此,两个文件分开的原因。
.profile
用于与Bash无关的东西,例如环境变量$ PATH,它也应该随时可用。.bash_profile
专用于登录shell或登录时执行的shell。