精华内容
参与话题
问答
  • 入门学习Linux常用必会60个命令实例详解doc/txt

    千次下载 热门讨论 2011-06-09 00:08:45
    前面介绍了Linux下有多种Shell,一般缺省的是Bash,如果想更换Shell类型可以使用chsh命令。先输入账户密码,然后输入新Shell类型,如果操作正确系统会显示“Shell change”。其界面一般如下: Changing fihanging ...
  • shell变量基本基础

    2019-05-14 17:49:53
    Shell编程之变量变量:命名的内存寻址空间,我们命名变量今后使用时,其实就是在内存中找到相对应的内存存储位置来引用; 变量命名规则:只能用字母、数字和下划线,而且不能用数字开头,尽量避免和系统中已有...

    Shell编程之变量:
    变量:命名的内存寻址空间,当我们命名变量今后使用时,其实就是在内存中找到相对应的内存存储位置来引用;

                变量命名规则:只能用字母、数字和下划线,而且不能用数字开头,尽量避免和系统中已有变量名称重复,尽量使用大写
                变量又分为:(varname意为变量名称)
                        本地变量(varname=value)作用域为整个bash进程
                        局部变量(local varname=value)作用域为当前代码块
                        环境变量(export varname=value)作用域为当前shell进程及其子进程
                        位置变量($1、$2、$3…)用于引用脚本的参数
                        特殊变量($?)保留上一条命令的执行状态返回值
                                ($#)参数的个数
                                ($*)参数的列表
                                ($@)参数的列表
    
                    查看变量:set、export、env、printenv
                            Set:查看当前shell中所有变量
                            Printenv、env、export:查看当前shell中环境变量,三个作用一样
                    撤销变量:unset varname
                    打印输出变量:echo $varname

    转载于:https://blog.51cto.com/14132521/2394548

    展开全文
  • Linux的shell变量

    2011-03-15 23:14:00
    <br />Linux的变量分为两类:环境变量和本地变量 环境变量,或者称为全局变量,存在与所有的shell中,在你登陆系统的时候就已经有了相应的系统定义的环境变量了。Linux的环境变量具有继承性,即子shell...

    Linux的变量可分为两类:环境变量和本地变量

    环境变量,或者称为全局变量,存在与所有的shell中,在你登陆系统的时候就已经有了相应的系统定义的环境变量了。Linux的环境变量具有继承性,即子shell会继承父shell的环境变量。

    本地变量,当前shell中的变量,很显然本地变量中肯定包含环境变量。Linux的本地变量的非环境变量不具备继承性。

    Linux中环境变量的文件

        当你进入系统的时候,linux就会为你读入系统的环境变量,这些环境变量存放在什么地方,那就是环境变量的文件中。Linux中有很多记载环境变量的文件,它们被系统读入是按照一定的顺序的。

        /etc/profile

    此文件为系统的环境变量,它为每个用户设置环境信息,当用户第一次登录时,该文件被执行。并从/etc/profile.d目录的配置文件中搜集shell的设置。

        这个文件,是任何用户登陆操作系统以后都会读取的文件(如果用户的shell是csh、tcsh、zsh,则不会读取此文件),用于获取系统的环境变量,只在登陆的时候读取一次。

        假设用户使用的是BASH,那么

        /etc/bashrc

    在执行完/etc/profile内容之后,如果用户的SHELL运行的是bash,那么接着就会执行此文件。另外,当每次一个新的bash shell被打开时,该文件被读取。

        每个使用bash的用户在登陆以后执行完/etc/profile中内容以后都会执行此文件,在新开一个bash的时候也会执行此文件。因此,如果你想让每个使用bash的用户每新开一个bash和每次登陆都执行某些操作,或者给他们定义一些新的环境变量,就可以在这个里面设置。

        ~/.bash_profile

    每个用户都可使用该文件输入专用于自己使用的shell信息。当用户登录时,该文件仅仅执行一次,默认情况下,它设置一些环境变量,执行用户的.bashrc文件。

        单个用户此文件的修改只会影响到他以后的每一次登陆系统。因此,可以在这里设置单个用户的特殊的环境变量或者特殊的操作,那么它在每次登陆的时候都会去获取这些新的环境变量或者做某些特殊的操作,但是仅仅在登陆时。

        ~/.bashrc

    该文件包含专用于单个人的bash shell的bash信息,当登录时以及每次打开一个新的shell时,该该文件被读取。

        单个用户此文件的修改会影响到他以后的每一次登陆系统和每一次新开一个bash。因此,可以在这里设置单个用户的特殊的环境变量或者特殊的操作,那么每次它新登陆系统或者新开一个bash,都会去获取相应的特殊的环境变量和特殊操作。

    ~/.bash_logout

    当每次退出系统(退出bash shell)时,执行该文件。

    几个命令

        env和printenv

        这两个变量用于打印所有的环境变量:

    [root@devdb1 worksh]# env

    HOSTNAME=devdb1

    TERM=vt100

    ..........................................................

    OLDPWD=/root

    [root@devdb1 worksh]# printenv

    HOSTNAME=devdb1

    TERM=vt100

    ..........................................................

    OLDPWD=/root

    [root@devdb1 worksh]#

        另外,env变量还有其他的功能,如下:

    env [-i|-] [name=value] [command [argument]]

    这里的“-i”或者“-”,都是表示忽略继承的环境变量;这里的name=value,用于指定本地变量对,可以有多组;整个命令的含义是,忽略继承的环境变量,设定多组name变量,在此基础上运行命令command。如

    env -i test="test" bash -c /'echo $SHELL; env/'

    /bin/bash

    PWD=/home/oracle

    test=test

    SHLVL=1

    _=/bin/env

    很显然,这里新运行bash并没有继承环境变量,但是却设置了本地变量test。

        set

        用于显示与设置当前本地变量。单独一个set就显示了当前环境的所有的变量,它肯定包括环境变量和一些非环境变量,如:

    [oracle@devdb1 oracle]$ set

    BASH=/bin/bash

    BASH_VERSINFO=([0]="2" [1]="05b" [2]="0" [3]="1" [4]="release" [5]="i386-redhat-linux-gnu")

    BASH_VERSION=/'2.05b.0(1)-release/'

    BDUMP=/opt/oracle/admin/devdb/bdump

    COLORS=/etc/DIR_COLORS

    COLUMNS=132

    DIRSTACK=()

    EUID=500

    GROUPS=()

    G_BROKEN_FILENAMES=1

    HISTFILE=/home/oracle/.bash_history

    HISTFILESIZE=1000

    HISTSIZE=1000

    HOME=/home/oracle

    .............................

        set很有很多其他的选项,具体请参考man set。

        unset

        用于清除变量。不管这个变量是环境变量还是本地变量,它都可以清除。

    -- 下面是清除本地变量

    [oracle@devdb1 oracle]$ set|grep myname

    myname=ilonng

    [oracle@devdb1 oracle]$ unset myname

    [oracle@devdb1 oracle]$ set|grep myname

    -- 下面是清除环境变量

    [oracle@devdb1 oracle]$ env|grep myname

    myname=ilonng

    [oracle@devdb1 oracle]$ unset myname

    [oracle@devdb1 oracle]$ env|grep myname

        export

    用于把变量变成当前shell和其子shell的环境变量,存活期是当前的shell及其子shell,因此重新登陆以后,它所设定的环境变量就消失了。如何将环境变量永久化?修改上面介绍的那几个环境变量的配置文件。

    [oracle@devdb1 oracle]$ export myname=ilonng

    [oracle@devdb1 oracle]$ env|grep myname

    myname=ilonng

    [oracle@devdb1 oracle]$ bash

    [oracle@devdb1 oracle]$ env|grep myname

    myname=ilonng

    [oracle@devdb1 oracle]$ exit

    exit

    [oracle@devdb1 oracle]$ env|grep myname

    myname=ilonng

        source

    当直接执行一个脚本的时候,其实是在一个子shell环境运行的,即开启了一个子shell来执行这个脚本,脚本执行完后该子shell自动退出。

    有没有办法在当前shell中执行一个脚本呢?使用source命令就可以让脚本在当前shell中执行。如:

    [oracle@dbamonitor NBU]$ cat test.sh   -- 查看脚本内容,显示变量内容

    echo $myname

    [oracle@dbamonitor NBU]$ echo $myname  -- 变量存在,内容是ilonng

    ilonng

    [oracle@dbamonitor NBU]$ set |grep myname -- 变量是本地变量

    myname=ilonng

    [oracle@dbamonitor NBU]$ env |grep myname -- 变量不是环境变量

    [oracle@dbamonitor NBU]$ sh test.sh  -- 直接执行,新开子shell,非环境变量的本地变量不具备继承性,在子shell中不可见

      -- 这里什么都没有输出

    [oracle@dbamonitor NBU]$ source test.sh -- source命令,是脚本在当前shell中执行

    ilonng

    展开全文
  • shell变量主要分为三种: 用户自定义变量 shell中定义变量的方式和python中类似,直接使用赋值符号就可以定义变量 (中间不要有空格) shell中定义的变量默认类型为 字符串类型 a=123 引用变量的方式有两种: $...

    shell变量类型主要分为三种:一般变量、字符串、数组

    一般变量(主要为数值)

    局部变量

    shell中定义变量的方式和python中类似,直接使用赋值符号就可以定义变量
    (中间不要有空格)
    shell中定义的变量默认类型为 字符串类型

    a=123
    

    引用变量的方式有两种:

    • $name:常用的引用变量方法
    • ${name}:当变量后面紧跟了字母或数字的时候使用,为了防止系统把整个$符号后面的字符串都解释为一个变量名字
    name=dog
    echo "There are many dogs"
    echo "There are many $names"
    echo "There are many ${name}s"
    输出:
    There are many dogs
    There are many			# 变量有误,输出为空
    There are many dogs
    
    • 注意:echo后面是双引号的时候才会解释变量,单引号的内容认为是原生字符串直接输出
      由于变量默认为字符串,使用变量进行±*/%运算,有下面三种方法:
    1. 使用$((expression))
    a=12
    b=15
    c=$((a+b))
    echo $c		#注意使用 $c 来引用变量c
    27
    
    1. 使用let
    a=12
    b=15
    let c=a+b
    echo $c
    27
    
    1. 使用declare -i
    a=12
    b=15
    declare -i c=a+b
    echo $c
    27
    

    只读变量:
    使用readonly来创建只读变量,其值不可改变

    name="dzzhyk"
    readonly name
    name="martin"
    

    删除变量:
    使用unset来删除变量

    a=10
    unset a
    echo $a
    # 输出为空
    

    环境变量

    定义环境变量:
    
    export PATH_NAME=/dir/...
    

    为了让环境变量定义生效且一直存在,可以将环境变量写入下面的两个文件的其中一个即可:

    /etc/profile
    /etc/bashrc
    

    可以把自己的sh文件放在/etc/profile.d文件目录下,可以开机启动

    shell变量

    1. $?
      返回一个数字,表示上一条命令的执行情况,如果返回0代表成功,非0则失败,一般用于shell的条件判断
    ifconfig eth0 | grep inet
    echo $?
    # echo的输出结果为0,代表上面的语句执行成功了
    
    如果上一个命令没有得到结果或者得到否定的结果,返回的也不是0,例如:
    
    systemctl status firewalld	# 假设防火墙已经关闭
    返回inactive
    使用$?得到的结果是3
    
    1. $RANDOM
      生成4~5位随机整数
    echo $RANDOM
    1213
    


    shell字符串

    字符串可以用双引号、单引号,也可以不用引号


    单引号

    echo '单引号'
    
    • 单引号里面不解释变量,按照原样输出
    • 单引号里面不能出现单个单引号,但是可以成对出现(字符串的拼接)
    echo 'abc'def'ghi'
    abcdefghi
    

    双引号

    echo "双引号"
    
    • 双引号内解释变量,如果变量不存在就会输出空
    • 双引号内部不能出现多个双引号,但是可以成对出现,也是拼接字符串
    echo "abc"def"ghi"
    abcdefghi
    

    获取字符串长度

    str="dzzhyk"
    echo "${#str}"
    6
    

    提取子字符串
    从索引1位置开始往后取3个字符

    str="dzzhyk"
    echo "${str:1:3}"
    zzh
    


    shell数组

    shell数组的下标范围是0~n
    创建数组

    array=(1 2 3 4 5)
    array[0]=1
    array[2]=2	
    array[100]=99	# 可以使用非连续下标创建数组,没有限制
    

    使用数组元素

    echo "${array[1]}"
    2
    

    使用@或*符号可以获取数组中的所有下标

    echo "${array[@]}"
    echo "${array[*]}"
    1 2 3 4 5
    

    获取数组的长度

    echo "#${array[*]}"
    5
    

    获取数组中某个元素的长度:标注特定的下标即可

    echo "#${array[2]}"
    1
    
    展开全文
  • Shell环境变量配置文件

    千次阅读 2017-03-06 14:05:15
    环境变量配置文件简介我们想添加自定义环境变量,并希望它永久生效,那么就需要将它写入到环境变量的配置文件中,Linux中的环境变量配置文件有下面5个,根据它们的作用范围分为两种,一种是针对整个系统,一种是...

    环境变量

    环境变量的作用是定义每个用户的操作环境,能够让我们快速访问某些程序或文件,省去了每次给出完整路径名的麻烦。

    环境变量配置文件简介

    当我们想添加自定义环境变量,并希望它永久生效,那么就需要将它写入到环境变量的配置文件中,Linux中的环境变量配置文件有下面5个,根据它们的作用范围分为两种,一种是针对整个系统,一种是针对单个用户。

    • /etc/profile
    • /etc/profile.d/*.sh
    • /etc/bashrc
    • ~/.bashrc
    • ~/.bash_profile

    上面的5个文件中,前三个对所有用户起作用,后两个,只对当前用户有效。

    环境变量配置文件的加载过程

    这里写图片描述

    正常登录的情况下,配置文件的加载顺序如下:

    "/ect/profile"->"/etc/profile.d/*sh"->"~/bash_profile"->"~/.bashrc"->"/etc/bashrc"

    如果从root用户切换到其他用户时,因为并不需要输入用户密码,它的配置文件加载过程如下,它之会重新加载与当前用户相关的配置文件:

    "/etc/bashrc"->"/etc/profild.d/*sh"

    打开文件“/etc/profile”,内容如下(我使用的是Ubuntu 16.04)

    # /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
    # and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
    
    if [ "$PS1" ]; then
      if [ "$BASH" ] && [ "$BASH" != "/bin/sh" ]; then
        # The file bash.bashrc already sets the default PS1.
        # PS1='\h:\w\$ '
        if [ -f /etc/bash.bashrc ]; then
          . /etc/bash.bashrc
        fi
      else
        if [ "`id -u`" -eq 0 ]; then
          PS1='# '
        else
          PS1='$ '
        fi
      fi
    fi
    
    if [ -d /etc/profile.d ]; then
      for i in /etc/profile.d/*.sh; do
        if [ -r $i ]; then
          . $i
        fi
      done
      unset i
    fi
    

    可以看到文件中会执行一个循环操作,只要文件可读并存在调用/etc/profile.d目录下的所有.sh文件。其它的原理是一样的。

    环境变量的声明方法

    环境变量的声明方式如下。

    //等号两边不要有空格
    export 变量名='变量内容(一般是目录)'

    如果想将自己变量的内容附加到另一个变量上,可以像下面这样

    //等号两边不要有空格
    export 变量名1=变量名1:变量名2

    当修改好配置文件后,注销并重新登录就可以起作用了,因为登录时会重新加载配置文件的。也可以通过下面的命令来主动加载配置文件,避免重新登录的麻烦。

    # source 配置文件
    // or
    # . 配置文件
    展开全文
  • shell变量分为环境级变量、用户级变量、系统级变量这三种 环境级变量只在当前 shell 中生效, shell 关闭变量丢失 用户级变量写在用户的骨文件(.bash_profile)中,只针对当前用户生效,切换用户后就不再生效 ...
  • 用户登录Linux系统启动一个bash shell时,系统默认会在几个文件中查找命令,这些文件就被称为环境文件。bash shell查找的环境文件取决于启动bash shell的方式。bash shell的启动方式可分为以下3种: 1. 用户登陆时...
  • shell编程(一)变量

    2015-10-16 10:53:09
    Shell中的变量分为局部变量、环境变量、位置变量三种。 Shell语言是一种解释型语言,它与C或Java语言不同,编程时无需事先声明变量对一个变量进行赋值时,也就定义了变量。局部变量指的是只在当前的进程和程序...
  • Bash的变量分为: 用户自定义变量 环境变量 位置参数变量 预定义变量 1、什么是变量? 变量:变量是计算机内存的单元,其中存放的值可以改变。当Shell脚本需要保存一些信息时,如一个文件名或者一个数字,...
  • Linux-shell学习笔记--环境变量

    千次阅读 2017-06-23 18:40:25
    Linux-shell 学习笔记–环境变量什么是环境变量环境变量是描述系统运行环境的一系列变量,如PATH描述了应该...普通变量书上把shell里面的变量分为全局和局部,站在环境变量的角度,以我的理解我把shell里面的变量分为
  • 人机交互接口大致可分为:GUI(图形用户界面)、CLI(命令行接口) 两种。命令解释器或shell程序是一种机制,通过使用它们,每个交互用户都可以向操作系统发出命令;操作系统也是通过它们,将相应的结果直接返回到...
  • 子进程被产生的时候,将会从父进程那里获得一定的资源分配、及(更重要的是)继承父进程的环境﹗ 2.Shell变量大致可以分为3种类型: 内部变量:系统提供,不用定义,不能修改,比如$#,$?,$*,
  • 相信不少玩过linux的人,...也有厉害一点的,能指出这些文件其实可以分为两个类别,分别是bashrc和profile,它们都是用来配置环境变量的,你安装了一些开发工具的时候就要修改这些文件来使得安装的内容能够全局生效
  • 变量

    2020-03-30 17:10:10
    变量分为三类: 1、环境级别的变量(当前环境关闭后变量失效) 定义格式:export a=1 特点:在此环境关闭后变量失效 定义变量前不加export时,在脚本中写入定义的变量后执行脚本,使用在当前shell下执行脚本的...
  • Linux添加环境变量

    千次阅读 2020-02-05 15:49:43
    1 linux添加环境变量分为两种情况: 临时变量,指当shell窗口关闭时变量失效,通过export命令添加 全局生效,修改/etc/profile文件,这样环境变量全局生效且不会因窗口的关闭而失效。 2 查看当前环境变量 echo $...
  • 环境变量

    2014-10-13 09:41:18
    用户环境变量修改按变量的生存周期来划分,Linux变量分为两类,它们的修改方法如下:(1)永久的:需要修改配置文件,变量永久生效。常见的配置文件包括:(1-1)/etc/profile:对所有用户生效;此文件为系统的每...
  • linux 变量

    2015-09-01 07:43:09
    linux 变量分为环境变量和本地变量 环境变量:又称全局变量,登录系统就有系统定义的环境变量,环境变量有继承性 本地变量:当前shell中的变量,本地变量包含环境变量,本地变量不具备继承性 相关命令 1: env /...
  • linux环境变量

    2015-08-31 16:14:36
    变量的生存周期来划分,Linux变量分为两类,它们的修改方法如下: (1)永久的:需要修改配置文件,变量永久生效。 常见的配置文件包括: (1-1)/etc/profile:对所有用户生效;此文件为系统的每个用户设置...
  • Linux环境变量

    2015-07-13 09:12:47
    linux按环境变量的生存周期来划分可分为两类,它们的修改方法如下: (1)永久的:需要修改配置文件,变量永久生效。  常见的配置文件包括:  (1-1)/etc/profile:对所有用户生效;此文件为系统的每个用户...
  • 我们进入bash,我们会发现我们已经有了很多变量可以用了,即使我们还什么都没操作。 为什么? 这就不得不提到系统的几个环境配置文件了。 其实,在bash启动的时候,它会去读取一些环境配置文件,这些配置文件又...
  • ubuntu 环境变量设置

    2018-01-30 14:40:24
    Ubuntu Linux系统环境变量配置文件分为两种:系统级文件和用户级文件,下面详细介绍环境变量的配置文件。 1.系统级文件: /etc/profile:在登录时,操作系统定制用户环境时使用的第一个文件,此文件为系统的每个...
  • 系统环境变量详解

    2016-12-12 15:08:54
    Ubuntu Linux系统环境变量配置文件分为两种:系统级文件和用户级文件,下面详细介绍环境变量的配置文件。 1.系统级文件: /etc/profile:在登录时,操作系统定制用户环境时使用的第一个文件,此文件为系统的每个用户...
  • linux编辑环境变量

    2016-03-16 17:58:53
    变量的生存周期来划分,Linux变量分为两类,它们的修改方法如下: (1)永久的:需要修改配置文件,变量永久生效。 常见的配置文件包括: (1-1)/etc/profile:对所有用户生效;此文件为系统的每个用户设置...
  • 环境变量的改变

    2019-05-25 17:29:00
    Linux变量分为两类,它们的修改方法如下: (1)永久的:需要修改配置文件,变量永久生效。 常见的配置文件包括: /etc/profile:对所有用户生效;此文件为系统的每个用户设置环境信息,用户第一次登录时,该...
  • linux修改环境变量

    2015-04-23 21:06:41
    变量的生存周期来划分,Linux变量分为两类,它们的修改方法如下: (1)永久的:需要修改配置文件,变量永久生效。  常见的配置文件包括:  (1-1)/etc/profile:对所有用户生效;此文件为系统的每个用户...

空空如也

1 2 3 4 5
收藏数 86
精华内容 34
热门标签
关键字:

当shell变量分为