启动时,Unix外壳会读取.bashrc文件并执行写入其中的命令。这个文件是什么,它执行什么操作?

评论

尝试在文本编辑器中打开文件-文件为纯文本。

#1 楼

实际上,是bash专门读取.bashrc(和/etc/bash.bashrc)。有很多不同的外壳。

bash手册页(由Brian Fox和Chet Ramey撰写;信息页“ Bash Startup Files”)是权威参考: br />当启动不是登录外壳的交互式外壳时,bash读取~/.bashrc中的命令,如果该文件存在,则执行
。通过使用--norc选项可以禁止此操作。
--rcfile文件选项将强制
bash从
文件而不是~/.bashrc读取并执行命令。

例如,以非交互方式启动bash
时,要运行shell
脚本,它将在环境中查找
变量BASH_ENV,如果
扩展其值,出现在此处,
并将扩展值用作要读取和执行的文件的名称。
Bash的行为就像执行了以下
命令:

if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi  


,但是PATH变量的值不用于搜索文件名称。


文件只是shell命令。它通常用于更改提示,设置环境变量和定义Shell过程。传统上,文件.profile是用于此目的的,但是bash具有很多扩展名,以至于想要将重载放入启动文件中的用户都需要自己的启动文件。诸如脚本启动以及通常由窗口管理器启动的终端窗口之类的东西。有时我将* nix系统设置为仅将.bashrc用作BASH_ENV.profile。只要您不偏离POSIX shell命令的范围,那么在任何shell中都将得到相同的初始化。为此,请使用:

. .profile


这是如此复杂的原因之一是,有时人们将可以产生输出的内容放入shell启动文件中,或者无条件设置提示。在语言中运行外壳程序和反引号命令时,这会引起很多问题,更不用说C程序中的sh了。我认为,bash的启动方式被设计为在输出和提示设置可以的情况下有一个文件,而在输出和提示设置没有问题的情况下有一个文件。传统上,将通过运行时测试来区分交互性,例如,检查是否设置了提示。

评论


好答案。引用一下:该文件只是shell命令。它通常用于更改提示,设置环境变量和定义Shell过程。

–smwikipedia
2011-2-19的3:53



有谁知道.bashrc / .zshrc的rc部分是什么意思?

– WORMSS
15年6月19日在13:28

@WORMSS:好问题!您不是唯一对此感到好奇的人。

–许嘉莉
2015年8月18日,下午3:35

也许rc表示运行时配置。

–迈克·迪恩(Mike Diehn)
18年11月28日在21:59

.bashrc或.zshrc中的rc或任何其他方式运行命令

– Suryaa Jha先生
20-2-16在14:27

#2 楼


当Bash启动时,它以各种不同的脚本执行命令。

当Bash作为交互式登录Shell调用时,它首先从文件/ etc / profile中读取并执行命令。 ,如果该文件存在。读取该文件后,它将按此顺序查找〜/ .bash_profile,〜/ .bash_login和〜/ .profile,并从存在的且可读的第一个命令中读取并执行命令。

退出登录shell时,Bash从〜/ .bash_logout文件(如果存在)中读取并执行命令。

当启动非登录shell的交互式shell时,Bash读取并执行命令。来自〜/ .bashrc,如果该文件存在。使用--norc选项可以禁止这种情况。 --rcfile文件选项将强制Bash从文件而不是〜/ .bashrc读取并执行命令。


http://en.wikipedia.org/wiki/Bash_(Unix_shell )

以下是一些技巧和窍门:

http://www.cyberciti.biz/tips/howto-linux-unix-bash-shell-setup-prompt。 html

让我们尝试设置提示,使其可以显示今天的日期和主机名:

PS1="\d \h $ "


评论


为什么.bash_profile之后是.profile?有逻辑吗?

–起搏器
17年11月2日,12:58



#3 楼

它应该为您的shell包含各种“初始化”命令,例如:


创建有用的别名(例如alias ll='ls -l')。
向PATH添加更多目录。
设置新的环境变量。


评论


别名的用途是什么?

–菠萝
09年9月30日在16:08

@pineapple:别名是一种运行命令的方法,该命令可能很长,但较短。例如,别名ll ='ls -l'允许您键入ll执行ls -l命令。

–苦难者
2011-2-19的3:53