Linux笔记——shell基础:变量&本地变量&位置变量&特定变量参数

本文深入探讨Linux环境变量的概念、分类、赋值方法、作用范围及如何在.profile、.bashrc文件中进行配置,包括如何修改环境变量、消除变量、使用变量保存系统命令参数、设置变量为只读,以及在shell脚本中使用位置变量参数。

列表:

Linux笔记——vim常用操作及扩展补充[手册]

Linux笔记——linux常用命令集合

Linux笔记——命令:awk

Linux笔记——命令:sed

Linux笔记——命令:grep

Linux笔记——命令:find

Linux笔记——命令:Sort,uniq,join,cut,paste,split

Linux笔记——shell基础:变量&本地变量&位置变量&特定变量参数

Linux笔记——条件测试test

Linux笔记——控制流

Linux笔记——shell补充:参数传递&函数等

Linux笔记——正则表达式入门及应用

Linux笔记——linux进程

Linux笔记——SVN命令总结

rpm&yum包管理命令总结

鉴于博客,表格&排版&颜色标记等等无法显示,大家可以下载这个笔记的资源

12个文档,不需要积分,以目录+表格+颜色标记形式

下载资源地址http://download.youkuaiyun.com/detail/wklken/3815477

The end! Thx! wklken的笔记

-----------------------------------------------

变量:

变量可以定制本身的工作环境。使用变量可以保存有用的信息,是系统获取用户相关的设置,变量也用于保存暂时信息。

在默认情况下,所有变量都被看做字符串并以字符串来存储,即使它们被复制为数值时也是如此

变量赋值

1. 赋值等号两边不能有空格

2. 字符串通常放在双引号中,以防止被空白字符分开,同时又允许$扩展

分类:

四种变量:环境变量、本地变量、位置变量、特定变量参数

环境变量

可在命令行中设置,但是用户注销时值将丢失

最好在.profile中设置

系统管理员可在/etc/profile中设置

设置环境变量

$var-Name=value

$export var-Name

【退出登陆后也丢失】

或者

$export MYNAME=”ken”

显示环境变量

$echo $var-Name

查看所有环境变量

$env

消除环境变量

$unset var-Name

修改环境变量

$MYNAME=”tom”

嵌入shell变量[预留变量名,不做其他用途]

CDPATH

EXINIT

HOME

当前用户主目录【家目录】

IFS

输入域分隔符。当shell读入输入时,它给出的分割单词的一组字符。通常是空格、制表符及换行符

LOGNAME

当前用户的登录名

MAIL

MAILCHECK

每隔多少秒检查是否有新的信件

MAILPATH

PATH

决定了shell将到哪些目录中寻找命令或程序, 执行命令时所搜寻的目录

冒号分隔,用来搜索命令的目录列表

PS1

基本命令提示符,对于root用户是#,对于普通用户是$【在命令列时的提示号】

PS2

附属二级提示符,默认是“>”, 当命令尚未打完时,Shell 要求再输入时的提示号

SHELL

当前用户Shell类型

TERMINFO

TERM

TZ

时区

EDITOR

PWD

PAGER

MAINPATH

man 指令的搜寻路径

USER

本地变量

本地变量在用户现在的Shell生命周期中使用,只在 用户当前Shell生命期有意义,若在shell中启动另一进程或者退出,此值将无效

优点:用户不能对其他地Shell或进行设置此变量有效

设置方式:

$Var-name=value

或者

${Var-name=value}

若取值包含空格,可用双引号引起

例子:

$GREAT=”12345”

$echo $GREAT

$echo ${GREAT}

Var-Name=value

赋值

Var-Name+value

若设置了,重新赋值,否则赋值

Var-Name:?value

若未设置,显示未设用户错误信息

Var-Name?value

若未设置,显示系统错误信息

Var-Name:=value

若未设置,设置

Var-Name:-value

同上,但取值并不设置到var-Name,可以被替换

消除变量

$unset variable-name

例子:

$PC=”enterprise”

$unset PC

$echo $PC

显示所有本地shell变量

$set

结合变量值(将变量并排)

$echo ${v1}${v2}

测试变量是否取值:

$unset tom

$echo “${tom:?}” //若未设置返回系统错误信息

$echo “${tom:?”MyErrorMsg”}” //未设置返回自定义错误信息

$echo “The sky is ${COLOUR:-grey} today” //若未设置,使用grey,之后COLOUR仍未设置

$ehco “The sky is ${COLOUR:=grey} today” //若为设置,设置之,之后,COLOUR有值

使用变量保存系统命令参数

$SOURCE=”/etc/passwd”

$DEST=”/tmp/passwd.bak”

$cp $SOURCE $DEST

将变量设置为只读[不能再后期改变之]

$var-Name=value

$readonly var-Name

位置变量

执行脚本时向其传递参数

可传递多个,但是使用位置变量参数只能访问前9个

脚本名称 A B C D E F

$0 $1 $2 $3 $4 $5 $6

特定位置变量参数

运行时脚本的一些相关信息

$0

shell脚本名称

$#

传递到脚本的参数个数

$*

以一个单字符串显示所有想脚本传递的参数,与位置变量参数不同,此项参数可超9个【程序的所有参数】,各个参数之间使用环境变量IFS的第一个字符分隔开

$$

shell脚本运行的当前进程ID号【程序的PID】

$!

后台运行的最后一进程的进程ID号【执行上一个指令的PID】

$@

是$*的一种精巧变体,不适用IFS环境变量。但是使用时加引号,并在引号中返回每个参数

如果想访问脚本程序的参数,使用$@是明智的选择

$-

显示shell使用的当前选项,与set命令功能相同

$?

显示最后命令的退出状态,0表示成功,其他值表示出错【执行上一个指令的返回值】

附注:环境变量的设置及修改

Bash启动时读取以下文件

/etc/profile

~/.bash_profile

~/.bashrc

方法一:修改/etc/profile文件

如果你的计算机仅仅作为开发使用时推荐使用这种方法,因为所有用户的shell都有权使用这些环境变量,可能会给系统带来安全性问题。

(1)用文本编辑器打开/etc/profile 【对所有用户生效(永久的)】

(2)在profile文件末尾加入:

JAVA_HOME=/usr/share/jdk1.5.0_05

PATH=$JAVA_HOME/bin:$PATH

CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export JAVA_HOME

export PATH

export CLASSPATH

(3)重新登录

注:修改文件后要想马上生效还要运行# source /etc/profile不然只能在下次重进此用户时生效。

注解:

a. 你要将 /usr/share/jdk1.5.0_05jdk 改为你的jdk安装目录

b. linux下用冒号“:”来分隔路径

c. $PATH / $CLASSPATH / $JAVA_HOME 是用来引用原来的环境变量的值,在设置环境变量时特别要注意不能把原来的值给覆盖掉了,这是一种常见的错误。

d. CLASSPATH中当前目录“.”不能丢,把当前目录丢掉也是常见的错误。

e. export是把这三个变量导出为全局变量。

f. 大小写必须严格区分。

方法二:修改用户目录下的.bash_profile文件中增加变量

【对单一用户生效(永久的)】

这种方法更为安全,它可以把使用这些环境变量的权限控制到用户级别,如果你需要给某个用户权限使用这些环境变量,你只需要修改其个人用户主目录下的.bashrc文件就可以了。

(1)用文本编辑器打开用户目录下的.bashrc文件

(2)在.bashrc文件末尾加入:  

set JAVA_HOME=/usr/share/jdk1.5.0_05

export JAVA_HOME

set PATH=$JAVA_HOME/bin:$PATH

export PATH

set CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export CLASSPATH

(3)重新登录

$ cd~ #到用户根目录下

$ ls -a #查看所有文件,包含隐藏的文件

$ vi .bash_profile#修改用户环境变量文件

例如:

编辑你的PATH声明,其格式为:

PATH=$PATH:<PATH 1>:<PATH 2>:<PATH 3>:------:<PATH N>

你可以自己加上指定的路径,中间用冒号隔开。

环境变量更改后,在用户下次登陆时生效。

如果想立刻生效,则可执行下面的语句:$source .bash_profile

方法三:直接在shell下设置变量

【只对当前shell(BASH)有效(临时的)】

不赞成使用这种方法,因为换个shell,你的设置就无效了,因此这种方法仅仅是临时使用,以后要使用的时候又要重新设置,比较麻烦。

只需在shell终端执行下列命令:

export JAVA_HOME=/usr/share/jdk1.5.0_05

export PATH=$JAVA_HOME/bin:$PATH

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值