~/.profile
和 和有什么区别~/.bash_profile
?
答案1
这.profile
是 Bourne shell(又名sh
)的原始配置文件配置。bash
,作为 Bourne 兼容 shell 将读取并使用它。另一方面.bash_profile
,只能由 读取bash
。它适用于与标准 Bourne shell 不兼容的命令。
答案2
原始sh
来源是.profile
在启动时。
bash
将尝试.bash_profile
首先获取来源,但如果不存在,它将获取.profile
1。
请注意,如果bash
启动为sh
(例如,/bin/sh
链接到/bin/bash
)或以标志启动--posix
,则它会尝试模拟sh
,并且仅读取.profile
。
脚注:
- 事实上,第一个
.bash_profile
,,.bash_login
.profile
也可以看看:
答案3
您知道 UNIX 世界中存在许多 shell,但其中大多数是:
- 伯恩外壳:(
/bin/sh
发明者:斯蒂芬·伯恩) - 重击(Bourne Again Shell):(
/bin/bash
发明者:Brian Fox,GNU 项目下)(强大的 shell) - C壳:(
/bin/csh
发明人:Bill Joy,TCP/IP 堆栈的发明人) - 科恩壳:(
/bin/ksh
发明者:贝尔实验室的David Korn) - Z壳:(
/bin/zsh
强大的外壳) - TENEX C 外壳:
/bin/tcsh
(源自 C Shell) - Debian Almquist shell:(
/bin/dash
源自Almquist shell(NetBSD项目下的ash))(Dash诞生于lenny)
但你的问题是关于~/.bash_profile
和~/.profile
:
当您登录到 UNIX 计算机时,它会根据管理员在最后一个字段中选择的 shell 重定向到您的主目录,例如/etc/passwd
:
mohsen:x:1000:1000:Mohsen Pahlevanzadeh,,,:/home/mohsen:/bin/bash
您的 shell 运行,默认情况下每个 shell 都有一个login
和 的设置文件logout
。当您登录 bash 时,~/.profile
运行,当您登录时logout
,~/.bash_logout
运行。
~/.bash_history
文件保存您的输入命令。
每个shell中的初始化文件
TENEX C 外壳
~/.login
当您登录时~/.logout
当您注销时~/.tcshrc
~./bashrc
与bash 中相同
您可以将变量设置$histfile
为历史文件的名称,并将变量设置$history
为要保留的命令数。
Z壳
事实上,它是一个功能强大的 shell,如果您有空闲时间,请务必迁移到它。
除了其他shell之外,Z shell还有很多配置文件和初始化文件,我就这么写:
$ZDOTDIR/.zshenv
$ZDOTDIR/.zprofile
$ZDOTDIR/.zshrc
$ZDOTDIR/.zlogin
$ZDOTDIR/.zlogout
/tmp/zsh*
/etc/zshenv
/etc/zprofile
/etc/zshrc
/etc/zlogin
注意:如果$ZDOTDIR
未设置,请设置为 home。
C壳
注意:TENEX C shell 是从 C shell 分叉出来的。 BSD 支持 C shell。如果您熟悉 C 语言编程,您应该会感到很舒服,因为它的语法相似。
~/.login
~/.cshrc
~/.logout
注意:csh 是旧的。请改用 tcsh。
科恩壳牌
~/.profile
- rc 文件:用户定义
- 注销文件:不适用
谍影重重 SHell (BASH)
它是非常非常强大的 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 下工作。
答案4
登录 shell 只是一个可以通过 ssh 或在控制台登录的 shell。非登录 shell 是其他人也无法登录的 shell。非登录 shell 通常由程序/系统服务使用。
至于你的第三点。确实.bashrc
是在 shell 的每个实例上执行。但.bash_profile
仅在登录时使用。这就是两个单独文件的原因。
.profile
用于与 Bash 没有特别相关的内容,例如环境变量 $PATH,它也应该随时可用。.bash_profile
专门用于登录 shell 或登录时执行的 shell。