Shell变量及登陆
Posted litby
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shell变量及登陆相关的知识,希望对你有一定的参考价值。
Shell有外壳的意思,它为用户提供和内核交互的平台,内核再通过底层的system call(系统调用)进而实现功能。
Linux Shell的特性:
1、快捷方式:ctrl+a(ahead)将光标移到最前
ctrl+e(end)将光标移到最后
ctrl+c(cancel)取消命令执行
ctrl+d(相当于logout)
ctrl+r(read history)(ctrl+r搜索到历史命令后Tab可修改查询到的命令)
2、其他快捷方式
!!表示调用上一条命令
!(num)执行编导为num的历史命令
!-(num)执行倒数第num历史命令
Shell是一种解释性语言,和其他高级语言一样,它也有自己的变量
Shell中的变量分为本地变量和环境变量(系统级别),相当于高级语言的局部变量和全局变量
Linux Shell中有很多系统自定义的环境变量,可以用env或者set命令来查询
常见的环境变量有:PS1、PATH、PWD、MAIL、HISTSIZE(变量HISTSIZE,命令先保存到内容,再存到命令历史文件~/.bahs_history)、HOSTNAME、LANG等等
例:PATH变量是命令的搜索路径,同windows一样。在Shell中添加PATH 变量的方法可以是:PATH=$PATH:/dir`
(它们有一个特点就是都是大写字母组成,虽不是必须的,但却是一种长久以来形成的约束)
区别:本地变量仅在当前Shell有效,环境变量在当前Shell及其子Shell有效
那么问题来了,如何设置本地变量和环境变量呢?
定义本地变量可直接在Shell里面输入 :变量名=变量值
然后将本地变量导出成环境变量:export 变量名
删除已定义的变量则用命令:unset 变量名
还可以给命令起别名,用alias命令
格式:alias new_value/command=old_value/command
取消别名用:unalias command
今天的重点来了,Shell的登陆过程,这是非常重要的
那么当我们登陆Shell之后,是不是自己不用定义PATH等变量就可以使用,为什么呢?
这是因为用户登陆Shell时会读取各种配置文件来获得初始化用户的环境和系统环境。
登陆过程又分为标准登陆和非标准登陆
从字面意义上很好理解,标准登陆就是需要涉及到密码认证的登陆过程,非标准登陆就是不需要涉及到密码认证的登陆过程
下面让我们来看看这两种不同的登陆方式的区别:
1、首先看一下标准登陆过程:
当用户输入密码通过认证之后,系统会首先读取/etc/profile这个配置文件(改文件定义了一些系统级别的环境变量、以及一些系统设置)
通过执行/etc/profile文件的内容进而读取/etc/profile.d/*.sh(如果用户想实现开机时执行,可在/etc/profile.d目录下创建.sh文件)
再而读取~/.bash_profile(用于定义当前用户的环境变量)
再读取~/.bashrc(用于定义当前用户的命令别名并跳转到/etc/bashrc)
最后读取/etc/bashrc
/etc/bashrc的内容执行后又会再回到/etc/profile.d/*.sh
2、下面我们再来看一下非标准登陆过程
~/.bashrc
/etc/bahsrc
/etc/profile.d/*sh
至此我们了解到了登陆过程和非登陆过程的配置文件读取区别,当我们在定义变量的时候,需要考虑变量生效的位置,写入不容的配置文件时,是否会生效。
此外:su命令有两种切换形式,su user为非登陆、su -l user为登陆模式
这是我第一篇博客,希望大家会喜欢!!!希望能帮到大家!
以上是关于Shell变量及登陆的主要内容,如果未能解决你的问题,请参考以下文章