当前位置:  开发笔记 > 编程语言 > 正文

.bashrc,.bash_profile和.environment之间有什么区别?

如何解决《.bashrc,.bash_profile和.environment之间有什么区别?》经验,为你挑选了4个好方法。

我已经使用了许多不同的基于*nix的系统,看起来我使用的Bash的每种风格都有不同的算法来决定运行哪些启动脚本.出于设置环境变量和别名以及打印启动消息(例如MOTD)等任务的目的,启动脚本是否适合执行这些操作?

是什么把事情之间的差异.bashrc,.bash_profile以及.environment?我也看到其他的文件,例如.login,.bash_login.profile; 这些是否相关?在物理登录,通过ssh远程登录以及打开新的终端窗口时,运行哪些不同?跨平台(包括Mac OS X(及其Terminal.app)和Cygwin Bash)是否存在显着差异?



1> Cos..:

与外壳配置文件的主要区别是,有些只能通过"登录"弹阅读(例如,当您从另一台主机,或在本地UNIX机器的文本控制台登录登录).这些是所谓的,.login或者说.profile或者.zlogin(取决于你使用的是哪个shell).

然后,你必须由"互动"弹读(如在配置文件中,那些连接到终端(或伪终端的,比方说,下一个窗口系统运行终端仿真器的情况下).这些都是名字的那些像.bashrc,.tcshrc,.zshrc等等.

bash这复杂化在.bashrc只有一个外壳,既是阅读互动非登录,所以你会发现大多数人最终会告诉他们.bash_profile也阅读.bashrc喜欢的东西

[[ -r ~/.bashrc ]] && . ~/.bashrc

其他shell的行为方式不同 - 例如zsh,.zshrc对于交互式shell,始终读取,无论是否为登录shell.

bash的手册页解释了读取每个文件的环境.是的,机器之间的行为通常是一致的.

.profile只是最初使用的登录脚本文件名/bin/sh.bash通常向后兼容/bin/sh,.profile如果存在,将读取.



2> Johannes Sch..:

这很简单.它的解释man bash如下:

/bin/bash
       The bash executable
/etc/profile
       The systemwide initialization file, executed for login shells
~/.bash_profile
       The personal initialization file, executed for login shells
~/.bashrc
       The individual per-interactive-shell startup file
~/.bash_logout
       The individual login shell cleanup file, executed when a login shell exits
~/.inputrc
       Individual readline initialization file

登录shell是您登录时读取的(例如,仅在启动xterm时不会执行).还有其他登录方式.例如,使用X显示管理器.这些还有其他方法可以在登录时读取和导出环境变量.

另请阅读INVOCATION手册中的章节.它说:"以下段落描述了bash如何执行其启动文件." ,我认为这是一个现场:)它解释了什么是"互动"外壳也是如此.

Bash不知道.environment.我怀疑这是你的发行版的一个文件,用于设置独立于你驱动的shell的环境变量.



3> Jonathan Lef..:

经典地,~/.profile由Bourne Shell使用,并且可能由Bash支持作为遗留度量.同样,~/.login~/.cshrc使用由C外壳-我不知道Bash使用它们.

~/.bash_profile将被使用一次,在登录.~/.bashrc每次启动shell时都会读取该脚本.这类似于/.cshrcC Shell.

一个后果是,在东西~/.bashrc应该是轻量级(最少)地启动非登录shell时减少开销.

我相信该~/.environment文件是Korn Shell的兼容性文件.



4> Filip Ekberg..:

我在这里找到了关于.bashrc和.bash_profile的信息来总结它:

登录时执行.bash_profile.你放入的东西可能是你的PATH和其他重要的环境变量.

.bashrc用于非登录shell.我不确定这意味着什么.我知道RedHat每次启动另一个shell时都会执行它(su给这个用户或者只是再次调用bash)你可能想把别名放在那里但是我不知道那意味着什么.我自己完全忽略它.

.profile相当于root的.bash_profile.我认为名称已更改为让其他shell(csh,sh,tcsh)也使用它.(你不需要一个用户)

还有.bash_logout执行,是的好猜...退出.你可能想要停止deamons甚至做一点管家.如果要在注销时清除屏幕,还可以在其中添加"清除".

也有一个完整的跟进每个配置文件在这里

这些甚至可能是依赖于发行版的,并非所有的发行版都选择与它们进行各种配置,而有些发行版甚至更多.但是当它们具有相同的名称时,它们通常包含相同的内容.

推荐阅读
有风吹过best
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有