特殊变量

环境变量:

  系统本身运行需要由linux系统提前创建好的一类变量

  主要用于用户的工作环境,包括(用户的宿主目录,命令的查找路径,用户的当前目录,登录的终端等)环境变量的值由操作系统本身维护,随着用户的状态改变而改变

使用env调取当前系统的环境变量

[root@zq ~]# env
XDG_VTNR=1
XDG_SESSION_ID=1
SSH_AGENT_PID=1925
HOSTNAME=zq                                主机名
IMSETTINGS_INTEGRATE_DESKTOP=yes
GPG_AGENT_INFO=/run/user/1000/keyring/gpg:0:1
VTE_VERSION=3803
XDG_MENU_PREFIX=gnome-
SHELL=/bin/bash
TERM=xterm-256color
HISTSIZE=1000
WINDOWID=37748743
IMSETTINGS_MODULE=IBus
USER=zq                                   当前用户

环境变量的配置文件在/etc/profile(全局)

用户宿主目录/home/zq/.bash profile(局部)

$PATH

定义命令默认的搜索路径

[root@zq ~]# echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/zq/.local/bin:/home/zq/bin

注意: 只有自己执行的命令在PATH变量包括的目录下,才可以直接使用并用tab补齐,如果不在PATH所包括的路径下,           只能通过绝对路径或相对路径使用

[root@zq ~]# echo $user[root@zq ~]# echo $USER  查看当前用户
zq
[root@zq ~]# echo $SHELL  当前脚本
/bin/bash
[root@zq ~]# echo $HOME
/root当前语言  $LANG

eg: 将我们所写的脚本放到$PATH的默认搜索路径中去

[root@zq ~]# first.sh       不能直接运行这个脚本
bash: first.sh: 未找到命令...
[root@zq ~]# echo $PATH       因为PATH中没有这个命令
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/zq/.local/bin:/home/zq/bin
[root@zq ~]# PATH="$PATH:/root"   将这个路径加到PATH中去
[root@zq ~]# echo $PATH           PATH中显示有了这个脚本的路径
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/zq/.local/bin:/home/zq/bin:/root
[root@zq ~]# first.sh           可以直接运行这个脚本了  之前需要通过./执行的
mkdir: 无法创建目录"/root/shell": 文件已存在
eno16777736: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500inet 192.168.1.63  netmask 255.255.255.0  broadcast 192.168.1.255inet6 fe80::20c:29ff:fedf:de30  prefixlen 64  scopeid 0x20<link>

这个只能当前有效,想要永久生效的话必须在/etc/profile最后边加上刚刚设置的变量,保存退出,source生效之后,就可以永久直接执行了。

vim /etc/profile  最后追加 所有用户有效  重启或 source方可使用

或只是root用户生效的话 vim /root/.bash_profile 在这个文件的最后追加

每个用户还有自己的环境变量都在自己的宿主目录中

位置变量

  为了使用shell脚本程序:方便通过命令行为程序提供参数Bash引用了位置变量的概念

  当执行命令行操作时第一个字段表示命令字或程序名,其余的字符串参数按照从左到右的顺序一次给位置变量赋值

位置变量也叫位置参数,使用$1,$2,$3.....$表示

eg: 编写一个加法运算的脚本来说明位置变量

vim zq.sh

#!/bin/bash
SUM=$(expr $1 + $2)
echo "$1 + $2 = $SUM"

测试结果

[root@zq ~]# vim zq.sh
[root@zq ~]# ./zq.sh
bash: ./zq.sh: 权限不够
[root@zq ~]# chmod u+x zq.sh
[root@zq ~]# ./zq.sh
expr: 语法错误+  =
[root@zq ~]# ./zq.sh 1 2  给变量赋值才可以
1 + 2 = 3

预定义变量

$#:命令行中位置变量的个数(程序执行了几个位置参数)

$*:所有位置变量的内容(具体的内容 比如/boot就是个具体内容)

$?:上一条命令执行后返回的状态,当返回状态值为0时表示执行正常,非0值表示执行异常或出错取值在1-127之间

$0:当前执行的进程/程序名(就是当前执行的命令或程序的名字)

!$:表示上一个命令的最后一个参数

转载于:https://www.cnblogs.com/zq6041/p/6828533.html

linux 特殊shell变量相关推荐

  1. linux中shell变量$#,$@,$0,$1,$2的含义解释

    linux中shell变量$#,$@,$0,$1,$2的含义解释:  变量说明:  $$  Shell本身的PID(ProcessID)  $!  Shell最后运行的后台Process的PID  $ ...

  2. linux中sh+$0,浅谈linux中shell变量$#,$@,$0,$1,$2的含义解释

    摘抄自:ABS_GUIDE 下载地址:http://www.tldp.org/LDP/abs/abs-guide.pdf linux中shell变量$#,$@,$0,$1,$2的含义解释: 变量说明: ...

  3. linux变量中代,linux中shell变量$#,$@,$0,$1,$2和变量${0%/*}

    一直傻傻搞不清,还是梳理一下吧. linux中shell变量$#,$@,$0,$1,$2的含义解释: 变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Pr ...

  4. 浅谈linux中shell变量$#,$@,$0,$1,$2,$?的含义解释

    浅谈linux中shell变量$#,$@,$0,$1,$2,$?的含义解释 下面小编就为大家带来一篇浅谈linux中shell变量$#,$@,$0,$1,$2的含义解释.小编觉得挺不错的,现在就分享给 ...

  5. Linux的shell变量

    Linux的变量可分为两类:环境变量和本地变量 环境变量,或者称为全局变量,存在与所有的shell中,在你登陆系统的时候就已经有了相应的系统定义的环境变量了.Linux的环境变量具有继承性,即子she ...

  6. Linux中shell变量作用域笔记

    变量的作用域又可以叫做"命名空间",表示变量的上下文,同名的变量可以在多个命名空间定义,彼此互相独立. 在linux系统中,不同的进程ID的Shell默认为一个不同的命名空间. 比 ...

  7. Linux 的 Shell 变量

    [简述] 变量即计算机中用于记录一个值的符号,而这些符号可用于不同的运算处理中. 通常变量与值是一对一的关系,可以通过表达式读取它的值并赋值给其它变量,也可以直接指定数值赋值给任意变量. 为便于运算和 ...

  8. Linux有关Shell变量的笔记

    1.Shell变量的命名规则 Shell变量命名规则必须以字母或者下划线开头,后面可以跟数字.字母或者下划线,变量的长度一般没有限制.需要注意的是变量的命名是区分大小写的.一般情况下变量的命名要有意义 ...

  9. Linux中shell变量基础概念笔记

    1.变量的概念 其实shell中的变量是指向系统中一块存储数据的内存空间.变量的形式有局部变量和环境变量两种.并且shell变量属于弱类型的变量,可以不指定变量的类型就可以使用. 2.局部变量 局部变 ...

  10. (转载)linux中shell变量

    (转载)http://blog.csdn.net/zahuopuboss/article/details/8633891 为使shell编程更有效,系统提供了一些shell变量.shell变量可以保存 ...

最新文章

  1. 已禁用对分布式事务管理器(MSDTC)的网络访问。请使用组件服务管理工具启用 DTC 以便在 MSDTC 安全配置中进行网络访问。...
  2. Mac安装Dart的SDK
  3. 2021-11-28
  4. 硬件:U盘无法识别的解决方案
  5. net Core做一个webApi的简单实例
  6. Vmware安装CentOS7后访问不了外网
  7. CA7 ROLL B 选项
  8. asp.net mvc 如何调用微信jssdk接口:分享到微信朋友(圈)| 分享到qq空间
  9. c++ STL输入流迭代器
  10. 【杂谈】为了子孙后代,请不要逃离大城市或者龟缩在三四线小城市
  11. 25匹赛马得前三名问题求解
  12. 【ADRC/Matlab实现】非线性状态误差反馈NLSEF
  13. 时序分析模型——MMMC
  14. 天津财经大学珠江学院考计算机二级,【2019年12月天津计算机二级考试报名入口已开通】- 环球网校...
  15. windows Internet Connection Sharing(ICS)服务的启动
  16. 诸葛:分析师是如何写好数据研究报告的?
  17. Win10问题篇:解决AMD家CPU机械,固态硬盘混用导致的卡顿(爆音)问题。
  18. java有阴历年算法吗_中国农历算法java实现
  19. 读懂消费贷款之中国消费金融发展史
  20. File “./tools/train.py“, line 124 log_file = osp.join(cfg.work_dir, f‘{timestamp}.log‘)

热门文章

  1. 【CodeForces - 722D】Generating Sets(二分,贪心)
  2. 【牛客 - 327G】处女座与复读机(可编辑距离问题,dp)
  3. 【 HDU - 2594 】Simpsons’ Hidden Talents(KMP应用,求最长前缀后缀公共子串)
  4. webform计算某几列结果_WebForm获取checkbox选中的值(几个简单的示例)
  5. 龙果学院mysql分布式集群代码_龙果学院-MySQL大型分布式集群解决方案
  6. oracle修改某个数据类型,Oracle 修改某个字段的数据类型三种方式
  7. html在表格添加下拉按钮,Bootstrap-table 使用说明--如何在表格td里增加一个按钮
  8. mysql授权 改表_mysql开启远程登陆(修改数据表和授权两种方法)
  9. python买东西_Python实战之ATM+购物车
  10. 键盘录入一个字符串,判断是否是对称字符串