zoukankan      html  css  js  c++  java
  • 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 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"

    测试结果

    [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:当前执行的进程/程序名(就是当前执行的命令或程序的名字)

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

  • 相关阅读:
    laravel 查询
    好友数量
    laravel 更新
    laravel 多对多关联 attach detach sync
    laravel zh-CN
    laravel 框架后台主菜单接口
    Visual Studio 2012 Update 3
    IIS7 禁止目录运行脚本
    [驱动力]读书笔记
    [Python Essential Reference, Fourth Edition (2009)]读书笔记
  • 原文地址:https://www.cnblogs.com/zq6041/p/6828533.html
Copyright © 2011-2022 走看看