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变量及登陆的主要内容,如果未能解决你的问题,请参考以下文章

shell脚本基础1 概述及变量

几句话说清Bash Shell环境变量

Shell脚本基本编辑规范及变量

shell脚本的编辑规范和变量

Shell编程 之 环境变量配置文件

shell脚本中的变量及变量传参详解