~/.profile 和 ~/.bash_profile 之间有什么区别?

~/.profile 和 ~/.bash_profile 之间有什么区别?

~/.profile和 和有什么区别~/.bash_profile

答案1

.profile是 Bourne shell(又名sh)的原始配置文件配置。bash,作为 Bourne 兼容 shell 将读取并使用它。另一方面.bash_profile,只能由 读取bash。它适用于与标准 Bourne shell 不兼容的命令。

答案2

原始sh来源是.profile在启动时。

bash将尝试.bash_profile首先获取来源,但如果不存在,它将获取.profile1

请注意,如果bash启动为sh(例如,/bin/sh链接到/bin/bash)或以标志启动--posix,则它会尝试模拟sh,并且仅读取.profile

脚注:

  1. 事实上,第一个.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。

相关内容