〜/ .profile和〜/ .bash_profile有什么区别?


Answers:


44

.profile是Bourne Shell的原始配置文件配置(又名sh)。bash,成为兼容Bourne的shell即可阅读和使用。在.bash_profile另一方面,仅被读取bash。它适用于与标准Bourne Shell不兼容的命令。


如果我错了,请纠正我。.profile被任何Bourne兼容shell使用,而.bash_profile仅被bash使用。
lakesh 2012年

2
@lakesh:是的,任何提供bourne兼容性的shell都将读取.profile。例如,bashksh而不是cshtcsh。并且zsh提供shcsh兼容性,因此它将读取.profile.login以及zsh特定的点文件。
bahamat 2012年

有什么教程可以阅读有关bash和ksh的内容吗?以前从未听说过这些东西
lakesh 2012年


25

原始sh源于.profile启动。

bash将尝试.bash_profile首先提供源,但是如果不存在,它将提供.profile1

请注意,如果bash以开头sh(例如/bin/sh是的链接/bin/bash)或以该--posix标志开头,则它将尝试进行仿真sh,并且仅读取.profile

脚注:

  1. 其实,第一个.bash_profile.bash_login.profile

也可以看看:


2
太棒

10

您知道UNIX世界中存在许多shell,但是其中大多数是:

  • Bourne shell中/bin/sh(发明人:斯蒂芬·伯恩)
  • BASH(Bourne Again Shell):(/bin/bash发明人:Brian Fox,在GNU项目下)(强大的Shell)
  • C shell:(/bin/csh发明人:Bill Joy,TCP / IP Stack的发明人)
  • Korn shell:(/bin/ksh发明人:Bell Labs的David Korn)
  • Z shell:(/bin/zsh强大的shell)
  • TENEX C shell:(/bin/tcsh源自C Shell)
  • Debian Almquist 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文件保留您的输入命令。

每个外壳中的初始化文件

TENEX C外壳

  • ~/.login 登录时
  • ~/.logout 登出时
  • ~/.tcshrc~./bashrcbash一样

您可以将变量设置$histfile为历史文件的名称,并将变量设置$history为要保留的命令数。

Z壳

确实,它是强大的外壳,如果您有空闲时间,请确保迁移到它。

除其他外壳程序外,Z外壳程序有许多配置文件和初始化文件,只是我这样写:

$ZDOTDIR/.zshenv
$ZDOTDIR/.zprofile
$ZDOTDIR/.zshrc
$ZDOTDIR/.zlogin
$ZDOTDIR/.zlogout
/tmp/zsh*
/etc/zshenv
/etc/zprofile
/etc/zshrc
/etc/zlogin

注意:如果未$ZDOTDIR设置,则进行家庭设置。

C壳

注意:TENEX C shell是从C shell派生的。BSD支持C shell。如果您熟悉C语言编程,则应该感到舒服,因为其语法相似。

~/.login
~/.cshrc
~/.logout

注意:csh是旧的。请改用tcsh。

科恩·壳

  • ~/.profile
  • rc文件:用户定义
  • 注销文件:N / A

伯恩重击(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下工作。


2
Chet Ramey是Bash的主要开发人员。
2013年

4

登录shell只是可以通过ssh或在控制台登录的shell。非登录外壳是某人也无法登录的外壳。程序/系统服务通常使用非登录外壳。

至于你的第三点。.bashrc在外壳的每个实例上执行都是正确的。但是.bash_profile仅在登录时使用。因此,两个文件分开的原因。

.profile用于与Bash无关的东西,例如环境变量$ PATH,它也应该随时可用。.bash_profile专用于登录shell或登录时执行的shell。


〜/ .profile和〜/ .bash_profile之间的区别?
Lakesh 2012年

2
.profile用于与Bash无关的事物,例如环境变量PATH,它也应该随时可用。.bash_profile专用于登录shell或登录时执行的shell。
anzenketh 2012年

将该陈述添加到您的答案中。...cos,我的问题是....
lakesh 2012年

??那甚至没有回答问题?
Mikel 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.