linux 特殊shell变量
特殊变量
环境变量:
系统本身运行需要由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变量相关推荐
- linux中shell变量$#,$@,$0,$1,$2的含义解释
linux中shell变量$#,$@,$0,$1,$2的含义解释: 变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $ ...
- linux中sh+$0,浅谈linux中shell变量$#,$@,$0,$1,$2的含义解释
摘抄自:ABS_GUIDE 下载地址:http://www.tldp.org/LDP/abs/abs-guide.pdf linux中shell变量$#,$@,$0,$1,$2的含义解释: 变量说明: ...
- linux变量中代,linux中shell变量$#,$@,$0,$1,$2和变量${0%/*}
一直傻傻搞不清,还是梳理一下吧. linux中shell变量$#,$@,$0,$1,$2的含义解释: 变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Pr ...
- 浅谈linux中shell变量$#,$@,$0,$1,$2,$?的含义解释
浅谈linux中shell变量$#,$@,$0,$1,$2,$?的含义解释 下面小编就为大家带来一篇浅谈linux中shell变量$#,$@,$0,$1,$2的含义解释.小编觉得挺不错的,现在就分享给 ...
- Linux的shell变量
Linux的变量可分为两类:环境变量和本地变量 环境变量,或者称为全局变量,存在与所有的shell中,在你登陆系统的时候就已经有了相应的系统定义的环境变量了.Linux的环境变量具有继承性,即子she ...
- Linux中shell变量作用域笔记
变量的作用域又可以叫做"命名空间",表示变量的上下文,同名的变量可以在多个命名空间定义,彼此互相独立. 在linux系统中,不同的进程ID的Shell默认为一个不同的命名空间. 比 ...
- Linux 的 Shell 变量
[简述] 变量即计算机中用于记录一个值的符号,而这些符号可用于不同的运算处理中. 通常变量与值是一对一的关系,可以通过表达式读取它的值并赋值给其它变量,也可以直接指定数值赋值给任意变量. 为便于运算和 ...
- Linux有关Shell变量的笔记
1.Shell变量的命名规则 Shell变量命名规则必须以字母或者下划线开头,后面可以跟数字.字母或者下划线,变量的长度一般没有限制.需要注意的是变量的命名是区分大小写的.一般情况下变量的命名要有意义 ...
- Linux中shell变量基础概念笔记
1.变量的概念 其实shell中的变量是指向系统中一块存储数据的内存空间.变量的形式有局部变量和环境变量两种.并且shell变量属于弱类型的变量,可以不指定变量的类型就可以使用. 2.局部变量 局部变 ...
- (转载)linux中shell变量
(转载)http://blog.csdn.net/zahuopuboss/article/details/8633891 为使shell编程更有效,系统提供了一些shell变量.shell变量可以保存 ...
最新文章
- 已禁用对分布式事务管理器(MSDTC)的网络访问。请使用组件服务管理工具启用 DTC 以便在 MSDTC 安全配置中进行网络访问。...
- Mac安装Dart的SDK
- 2021-11-28
- 硬件:U盘无法识别的解决方案
- net Core做一个webApi的简单实例
- Vmware安装CentOS7后访问不了外网
- CA7 ROLL B 选项
- asp.net mvc 如何调用微信jssdk接口:分享到微信朋友(圈)| 分享到qq空间
- c++ STL输入流迭代器
- 【杂谈】为了子孙后代,请不要逃离大城市或者龟缩在三四线小城市
- 25匹赛马得前三名问题求解
- 【ADRC/Matlab实现】非线性状态误差反馈NLSEF
- 时序分析模型——MMMC
- 天津财经大学珠江学院考计算机二级,【2019年12月天津计算机二级考试报名入口已开通】- 环球网校...
- windows Internet Connection Sharing(ICS)服务的启动
- 诸葛:分析师是如何写好数据研究报告的?
- Win10问题篇:解决AMD家CPU机械,固态硬盘混用导致的卡顿(爆音)问题。
- java有阴历年算法吗_中国农历算法java实现
- 读懂消费贷款之中国消费金融发展史
- File “./tools/train.py“, line 124 log_file = osp.join(cfg.work_dir, f‘{timestamp}.log‘)
热门文章
- 【CodeForces - 722D】Generating Sets(二分,贪心)
- 【牛客 - 327G】处女座与复读机(可编辑距离问题,dp)
- 【 HDU - 2594 】Simpsons’ Hidden Talents(KMP应用,求最长前缀后缀公共子串)
- webform计算某几列结果_WebForm获取checkbox选中的值(几个简单的示例)
- 龙果学院mysql分布式集群代码_龙果学院-MySQL大型分布式集群解决方案
- oracle修改某个数据类型,Oracle 修改某个字段的数据类型三种方式
- html在表格添加下拉按钮,Bootstrap-table 使用说明--如何在表格td里增加一个按钮
- mysql授权 改表_mysql开启远程登陆(修改数据表和授权两种方法)
- python买东西_Python实战之ATM+购物车
- 键盘录入一个字符串,判断是否是对称字符串