linux 特殊shell变量

特殊变量

环境变量:

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

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

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

[[email protected] ~]# 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

定义命令默认的搜索路径

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

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

[[email protected] ~]# echo $user

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

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

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

测试结果

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

预定义变量

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

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

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

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

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

时间: 2024-10-10 13:25:32

linux 特殊shell变量的相关文章

linux中shell变量$#,[email&#160;protected],$0,$1,$2的含义解释

摘抄自:ABS_GUIDE 下载地址:http://www.tldp.org/LDP/abs/abs-guide.pdf linux中shell变量$#,[email protected],$0,$1,$2的含义解释: 变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行的命令的结束代码(返回值) $- 使用Set命令设定的Flag一览 $* 所有参数列表.如"$*"用「"」括起来的情况.以&qu

linux的shell变量之美元符号

linux中shell变量$#,[email protected],$0,$1,$2的含义解释 摘抄自:ABS_GUIDE linux中shell变量$#,[email protected],$0,$1,$2的含义解释: 变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行的命令的结束代码(返回值) $- 使用Set命令设定的Flag一览 $* 所有参数列表.如"$*"用「"」括起来的情况.以&q

Linux中shell变量$0,$?等含义

linux中shell变量$#,[email protected],$0,$1,$2的基本含义: 变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行的命令的结束代码(返回值) $- 使用Set命令设定的Flag一览 $* 所有参数列表.如"$*"用「"」括起来的情况.以"$1 $2 … $n"的形式输出所有参数. [email protected] 所有参数列表.如"

【Shell】linux中shell变量$#,[email&#160;protected],$0,$1,$2的含义解释 &amp;&amp; set 关键字使用

linux中shell变量$#,[email protected],$0,$1,$2的含义解释 摘抄自:ABS_GUIDE 下载地址:http://www.tldp.org/LDP/abs/abs-guide.pdf linux中shell变量$#,[email protected],$0,$1,$2的含义解释: 变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行的命令的结束代码(返回值) $- 使用Set命令设定

【转】linux中shell变量$#,[email&#160;protected],$0,$1,$2的含义解释

原文网址:http://www.cnblogs.com/fhefh/archive/2011/04/15/2017613.html linux中shell变量$#,[email protected],$0,$1,$2的含义解释: 变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行的命令的结束代码(返回值) $- 使用Set命令设定的Flag一览 $* 所有参数列表.如"$*"用「"」括起来的情况

linux中shell变量$#,[email&#160;protected],$0,$1,$2的含义

#!/bin/bash #Created by ley on 2014-11-14 #Testing the Paramters echo  "The compleate list is %s\n" "$$" echo  "The compleate list is %s\n" "$!" echo  "The compleate list is %s\n" "$?" echo  &quo

Linux中shell变量的含义

$# 是传给脚本的参数个数  $0 是脚本本身的名字 $1 是传递给该shell脚本的第一个参数 $2 是传递给该shell脚本的第二个参数 [email protected] 是传给脚本的所有参数的列表 $* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个 $$ 是脚本运行的当前进程ID号 $? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误 Linux中shell变量的含义

浅谈linux中shell变量$#,[email&#160;protected],$0,$1,$2,$?的含义解释

浅谈linux中shell变量$#,[email protected],$0,$1,$2,$?的含义解释 下面小编就为大家带来一篇浅谈linux中shell变量$#,[email protected],$0,$1,$2的含义解释.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 摘抄自:ABS_GUIDE 下载地址:http://www.tldp.org/LDP/abs/abs-guide.pdf linux中shell变量$#,[email protected],$

Linux Gvim shell 变量

#!/bin/bash name=”Matto” #变量名和等号之间不能有空格# name=”Blog4Matto” #重定义name变量# readonly name #设置name为只读变量# unset name #删除变量,不能删除只读变量# ${name} #使用变量,加大括号是为了识别变量边界# 变量类型 1.局部变量:在脚本或命令中定义,仅在当前shell实例中有效 2.环境变量:所有程序,包括shell启动的程序都能访问环境变量,有些程序需要环境变量依赖保证其正常运   行,必要