交互式,非交互式,登录和非登录shell及/etc/bashrc

以前打开终端还挺快的,自从装了anaconda后,打开终端2 s才会出现,我也是真的操蛋,想改了下又无从下手,留到后面再说吧,只能忍一忍了,引发了交互式非交互式和登录,以及 .bashrc  /etc/profile等问题。记录一笔参考了两个博文

原文:

https://blog.csdn.net/qlexcel/article/details/44900223

http://smilejay.com/2012/10/interactive-shell-login-shell/

https://blog.csdn.net/jirryzhang/article/details/70833544

https://www.cnblogs.com/cwp-bg/p/8257843.html

太多了都说的千篇一律

一 、~/.bashrc /etc/profile

/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行,并从/etc/profile.d目录的配置文件中搜集shell的设置.
/etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.
~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.
~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取.
~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件. 

/etc/bashrc和~/.bashrc:  
一个是针对整个系统所有用户的,一个是针对特定用户的/etc/bashrc修改了以后要重启系统才生效,而用户目录下.bashrc修改了以后重新登录就生效  

不同的发行版里面文件的命名可能有所不同,如有的发行版etc目录下有bashrc,有的发行版下面是bash.bashrc。这个根据每个人不同的发行版注意下具体的文件名称。

二 、交互非交互

交互式shell和非交互式shell、登录shell和非登录shell的区别。
首先,这是两个不同的维度来划分的,一个是是否交互式,另一个是是否登录。

交互式shell和非交互式shell(interactive shell and non-interactive shell)
交互式模式就是在终端上执行,shell等待你的输入,并且立即执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、退出。当你退出后,shell也终止了。
shell也可以运行在另外一种模式:非交互式模式,以shell script(非交互)方式执行。在这种模式 下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾EOF,shell也就终止了。
可以通过打印“$-”变量的值(代表着当前shell的选项标志),查看其中的“i”选项(表示interactive shell)来区分交互式与非交互式shell。

你可能感兴趣的:(Linux)