登陆、非登陆shell,交互、非交互shell,以及它们的startup文件
来源:互联网 发布:张银奎 软件调试 编辑:程序博客网 时间:2024/05/27 16:41
家目录下的配置文件.bashrc中rc的含义是resource configuration
什么是登陆shell?什么是非登陆shell?
登陆shell是指:(1)用户登陆时,输入用户名和密码后启动的shell;界面系统就是登录之后的桌面,非界面系统即为登录后的字符终端。(2)通过带--login参数的命令:bash --login而启动的shell。对于用户来说,登陆shell和非登陆shell的主要区别是:启动shell时所执行的startup文件不同。我在/etc/profile、~/.bash_profile、~/.bashrc三个文件中分别通过echo命令打印出文件名。执行命令如下所示:
wangjk@wangjiankun:~$ bash
.bashrc
wangjk@wangjiankun:~$ bash --login
etc/profile
.bash_profile
.bashrc
wangjk@wangjiankun:~$
上面的结果说明:登陆shell执行startup文件为:/etc/profile、~/.bash_profile、~/.bashrc, /etc/bashrc,而非登陆shell执行的startup文件仅为:~/.bashrc。
bash作为登陆shell是由/etc/login程序解析/etc/passwd文件而指定的,例如:wangjk:x:1000:1000:wangjiankun,,,:/home/wangjk:/bin/bash,其中红色域指定了用户的登录shell是bash。
事实上,bash作为登陆shell启动时执行的startup文件如下:
- /etc/profile
- ~/.bash_profile,~/.bash_login or ~/.profile, first existing readable file is read
而bash作为非登陆shell启动时读取~/.bashrc。注意,作为登陆shell时bash并不读取~/.bashrc,但是在文件~/.bash_profile中通常都有如下语句来读取~/.bashrc:
if [ –f ~/.bashrc ]; then . ~/.bashrc; fi
以上讨论的是交互式bash shell,其实shell有两种工作模式,就是:交互式和非交互式,执行脚本时,shell就工作在非交互式模式下。
wangjk@wangjiankun:~$
wangjk@wangjiankun:~$ echo $BASH_ENV
wangjk@wangjiankun:~$ ./test.sh
this file is test.sh
wangjk@wangjiankun:~$ export BASH_ENV=~/.test
wangjk@wangjiankun:~$ ./test.sh
I test non-interactive shell
this file is test.sh
wangjk@wangjiankun:~$
注意,中间的那个空行表示环境变量BASH_ENV为空,所以第一次运行脚本test.sh时只输出了一句话,在定义了环境变量BASH_ENV为~/.test以后运行脚本test.sh就打印了两句话其中第一句是运行文件~/.test打印出来的。
父shell和子shell
在一个shell A 中启动另一个shell B,则 shell B为shell A的子shell。例如在桌面式 登录shell 中打开了另一个非登录shell B,则B为子shell; 在非桌面式登录shell 或者 非登录shell下 使用shell指令(例如 $bash ),则进入子shell,使用exit退出子shell。
设置本地环境变量之后,如果不使用export,则只能在当前shell下使用该环境变量,如果使用export PAR_NAME="XXX",则可以在当前shell以及当前shell的子shell下使用该环境变量。
- bash学习之一:登陆、非登陆shell,交互、非交互shell,以及它们的startup文件
- bash:登陆,非登陆shell;交互,非交互shell;以及它们的startup文件
- 登陆、非登陆shell,交互、非交互shell,以及它们的startup文件
- linux 登陆shell和非登陆shell
- Linux 登陆shell,交互shell以及环境变量读取顺序
- Linux 登陆shell,交互shell以及环境变量读取顺序
- 登陆shell与交互式非登陆shell的区别
- 关于登陆shell和非登陆shell的区别
- 登录/非登录、交互/非交互式shell
- linux 登陆shell与非登陆shell区别及配置文件
- busybox初始化配置 登陆shell 非登陆shell
- shell脚本实现无密码交互的SSH自动登陆
- shell脚本实现无密码交互的SSH自动登陆
- shell脚本实现无密码交互的SSH自动登陆
- shell脚本实现无密码交互的SSH自动登陆
- shell脚本实现无密码交互的SSH自动登陆
- shell脚本实现无密码交互的SSH自动登陆
- shell - 非交互方式改变登录用户密码
- poj1129_Channel Allocation
- MyEclipse 快捷键
- MemberCache学习
- QQ好友列表树形列表简单实现方式
- Maven学习笔记(二)---Myeclipse配置maven
- 登陆、非登陆shell,交互、非交互shell,以及它们的startup文件
- 伪静态 url 重写 apache linux
- 在OSGI容器Equinox中嵌入HttpServer
- lua语法学习
- Mtk Ft6306 touch 驱动
- Android大图片裁剪终极解决方案(上:原理分析)
- GO语言基础学习
- UNIX 编程中错误输出的线程安全问题
- 零点起飞学Android开发