网站图片一般的像素,营销型企业网站系统,wordpress后台主题插件,网站开发页面设计过程1. 背景
在看shell变量的时候引起了兴趣: 局部变量#xff0c;全局变量#xff0c;环境变量#xff0c;shell的配置文件#xff0c;参考博客:
http://c.biancheng.net/view/773.html 2. 交互式与非交互式
参考博客:
shell的两个属性:是否交互式(interactive), 是否登录…1. 背景
在看shell变量的时候引起了兴趣: 局部变量全局变量环境变量shell的配置文件参考博客:
http://c.biancheng.net/view/773.html 2. 交互式与非交互式
参考博客:
shell的两个属性:是否交互式(interactive), 是否登录(login) - 知乎
man bash: 通常的理解是: man手册中给我们提供了怎么判断交互与非交互的方法: 所以我看看我自己的shell是否是交互式的:
liaojunwuliaojunwu-virtual-machine:~$ echo $PS1
\[\e]0;\u\h: \w\a\]${debian_chroot:($debian_chroot)}\[\033[01;32m\]\u\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$
liaojunwuliaojunwu-virtual-machine:~$
liaojunwuliaojunwu-virtual-machine:~$ echo $-
himBH
liaojunwuliaojunwu-virtual-machine:~$ 3. 登录与非登陆
man bash: 通常的理解是: su和su -命令的区别参考博客: 一分钟知识点linux命令之su 和 su -
可以用shopt login_shell的方法来看看shell是否设置了login_shell选项我看看我自己的shell:
liaojunwuliaojunwu-virtual-machine:~$ shopt login_shell
login_shell off
liaojunwuliaojunwu-virtual-machine:~$
liaojunwuliaojunwu-virtual-machine:~$ su - liaojunwu --login
密码
liaojunwuliaojunwu-virtual-machine:~$
liaojunwuliaojunwu-virtual-machine:~$
liaojunwuliaojunwu-virtual-machine:~$ shopt login_shell
login_shell on
liaojunwuliaojunwu-virtual-machine:~$ 4. 为什么要知道这两种属性
因为涉及到shell配置方式的不同继续看man手册: 交互与登录属性一共有四种组合我们只看三种:
登录交互与登录非交互: bash配置shell的顺序是:
/etc/profile-~/.bash_profile-~/.bash_login-~/.profile-~/.bashrc
展开/etc/profile又可以看到登录交互会去配置/etc/bash.bashrc
# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).if [ $PS1 ]; thenif [ $BASH ] [ $BASH ! /bin/sh ]; then# The file bash.bashrc already sets the default PS1.# PS1\h:\w\$ if [ -f /etc/bash.bashrc ]; then. /etc/bash.bashrcfielseif [ id -u -eq 0 ]; thenPS1# elsePS1$ fifi
fiif [ -d /etc/profile.d ]; thenfor i in /etc/profile.d/*.sh; doif [ -r $i ]; then. $ifidoneunset i
fiexport PATH$PATH:/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin
非登录交互时: bash的配置顺序是:
/etc/bash.bashrc-~/.bashrc
我们可以看到不论是/etc/bash.bashrc还是~/.bashrc都要求是交互模式才行: 5. 验证
登录交互: /etc/profile-/etc/bash.bashrc-~/.bash_profile-~/.bash_login-~/.profile-~/.bashrc
liaojunwuliaojunwu-virtual-machine:~$
liaojunwuliaojunwu-virtual-machine:~$ echo $PS1
\[\e]0;\u\h: \w\a\]${debian_chroot:($debian_chroot)}\[\033[01;32m\]\u\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$
liaojunwuliaojunwu-virtual-machine:~$
liaojunwuliaojunwu-virtual-machine:~$
liaojunwuliaojunwu-virtual-machine:~$
liaojunwuliaojunwu-virtual-machine:~$ shopt login_shell
login_shell on
liaojunwuliaojunwu-virtual-machine:~$
liaojunwuliaojunwu-virtual-machine:~$
liaojunwuliaojunwu-virtual-machine:~$ logout
liaojunwuliaojunwu-virtual-machine:~$ exit
注销
liaojunwuliaojunwu-virtual-machine:~$ exit
注销
liaojunwuliaojunwu-virtual-machine:~$ exit
注销
liaojunwuliaojunwu-virtual-machine:~$ su - root
密码
[DEBUG]in /etc/profile!
[DEBUG]in /etc/bash.bashrc!
rootliaojunwu-virtual-machine:~#
rootliaojunwu-virtual-machine:~#
rootliaojunwu-virtual-machine:~# su - liaojunwu --login
[DEBUG]in /etc/profile!
[DEBUG]in /etc/bash.bashrc!
[DEBUG]in ~./profile!
[DEBUG]in ~./bashrc !
liaojunwuliaojunwu-virtual-machine:~$
非登录交互: /etc/bash.bashrc-~/.bashrc
[DEBUG]in /etc/bash.bashrc!
[DEBUG]in ~./bashrc !
liaojunwuliaojunwu-virtual-machine:~$ echo $-
himBH
liaojunwuliaojunwu-virtual-machine:~$ shopt login_shell
login_shell off
liaojunwuliaojunwu-virtual-machine:~$
liaojunwuliaojunwu-virtual-machine:~$
liaojunwuliaojunwu-virtual-machine:~$
liaojunwuliaojunwu-virtual-machine:~$
liaojunwuliaojunwu-virtual-machine:~$ bash -i
[DEBUG]in /etc/bash.bashrc!
[DEBUG]in ~./bashrc !
liaojunwuliaojunwu-virtual-machine:~$
6. PS1变量
参考博客: bash下变量PS1的完整理解_ps1变量_whowin的博客-CSDN博客