Linux shell和环境变量
环境变量
存储有关shell会话和工作环境信息;允许在内存中存储数据。
注意什么时候要用$ 什么时候不用$:用到变量,需要$;操作变量,不需要$。
printenv除外
分为两类:
全局变量:对shell会话及所有生成子shell都可见;
局部变量:只对创建它们的shell可见。
系统环境变量都是大写字母,区别于普通用户的环境变量。
全局变量:
查看命令:env或printenv;
显示个别环境变量的值 用printenv 或 echo $NAME


局部变量:
没有查看所有局部变量的命令。set命令显示某个特定进程设置的所有环境变量,包括局部、全局、用户自定义变量

设置用户定义变量
局部用户定义变量
启动一个shell,创建这个shell进程中局部可见的环境变量。
- 注意用小写字母,避免大写字母和系统环境变量冲突。同个shell中
bash创建子shell,仍然可用。新shell不可用。 - 等号给环境变量赋值,值可以是数值或字符串。
- 变量名 等号 值 之间不能有空格!否则空格后的值会看做一个单独命令!
- 子shell不能使用父shell的局部变量

全局用户定义变量
- 先创建一个局部环境变量,然后导入全局变量中
- 用
export命令,不需要$符号 - 子shell仍然可用全局变量,子shell中修改并导出不会影响父shell

删除环境变量
unset命令,操作时不用$
删除局部环境变量

删除全局环境变量,必须在创建全局变量的shell中操作,子shell不影响父shell

默认的shell环境变量
默认系统环境变量-表格查阅
设置PATH环境变量
PATH定义用于命令和程序查找的目录,用冒号分割。

- 要执行的命令或程序不在这些目录下,无法直接执行(除非绝对路径)
- 暂时添加:这几种方式退出shell或重启就失效了(持久化见下一节)
- 添加新目录到现有PATH中
PATH=$PATH:/new/document - 将单点符 . 加入PATH环境变量,就可以直接在某个目录下直接执行文件,不需要./ 了

定位系统环境变量
启动文件或环境文件启动一个bash shell时,bash会在几个文件中查找命令,这几个文件就是启动文件或环境文件。
bash检查的启动文件,取决于启动bash shell的方式。有三种:
- 登录时作为默认登录shell
- 作为非登录shell的交互式shell
- 作为运行脚本的非交互shell
1.登录shell
登录启动的bash shell,会从5个启动文件中读取命令:$HOME表示用户主目录,和~作用一样
- /etc/profile : 主启动文件。每个用户登录时都会执行这个启动文件
- $HOME/.bash_profile :另外四种是针对用户的,可个人定制
- $HOME/.bashrc
- $HOME/.bash_login
- $HOME/.profile
2.交互式shell进程
命令行输入bash 就是一个交互式shell
这种启动的bash shell,不会访问/etc/profile文件,只检查用户HOME目录中的.bashrc文件
3.非交互式shell
系统执行shell脚本时的shell,没有命令提示符
printenv BASH_ENV 检查启动文件。也会继承父shell的局部和全局变量(父可以是前面的两种:登录shell或交互shell)
4.环境变量持久化
1.全局变量
全局变量可以放在/etc/profile中,但是升级版本之后,这个文件会更新,所有定制过的变量会消失
最好在/etcprofile.d目录中创建一个.sh结尾的文件,把新的全局变量设置放在这里
2.个人用户的bash shell变量
$HOME/.bashrc文件中设置
3.持久化例子
(1)PATH全集变量
在$HOME/.bash_profile文件中加入一个PATH全局变量值,路径为/usr/local/mysql/bin。如下图所示:

(2)LD_AUDIT变量
在$HOME/.bash_profile文件中添加已编译好的so文件路径
export LD_AUDIT=/xx/process_audit.so

环境变量可以作为数组使用
给某个环境变量设置多个值,用() 中间用空格分割:
mytest=(one two three)
访问单个元素必须用索引值,用{}括起来
显示所有数组值echo $mytest{*}

shell常用命令
进程相关
ps
这个命令支持三种不同类型的命令行参数:
-ef- 这个符号 Unix风格
aux无 - BSD风格
--forest-- GNU风格长参数
ps -ef 或 ps aux -p参数指定pid
进程树方式 ps -ejH | grep pts 或 ps --forest 或 pstree

可以混合使用

top
实时监测进程
- 第一行:时间、平均负载(1min 5min 15min内的),一般超过2系统有问题
- 第二行:进程概要,task 处于运行、休眠、停止 或 僵化(进程完成了但是父进程没有响应)
- 第三行:cup概要
- 后面两行:系统内存状态,物理内存 和 系统交换空间
- 最后:进程详细列表,默认按照%cpu倒序。关注 %cpu进程使用的CPU时间比例 和 %mem 进程内存占可用内存的比例

kill
linux中,进程之间通过信号来通信,kill -l查看所有信号
kill PID结束某个PID进程,必须是PID
killall http* 可以用进程名来结束进程-小心别误删


获取dhcp
sudo dhclient ens33获取网卡动态地址,在ip addr网卡没有ip可用时
磁盘容量
mount / umount 挂载/卸载命令
Linux文件系统把所有磁盘并入一个虚拟目录下。使用新存储媒体前,需要放到虚拟目录下,这个过程叫作挂载。
可移动存储媒体:CD-ROM、软盘、U盘 通常都能自动挂载,mount手动挂载
mount显示当前设备挂载列表;
- 设备文件名
- 挂载到虚拟目录的挂载点
- 文件系统类型
- 已挂载媒体的访问状态
常见文件系统类型,如果和Windows PC共用存储设备,通常使用以下:
- vfat:Windows长文件系统,大多数U盘格式化的系统
- ntfs: Windows NT、XP、Visa 及 Win7 中广泛使用的高级文件系统
- iso9660 标准 CD-ROM文件系统

df -h
所有已挂载磁盘的使用情况
du -h
特定(当前)目录下的磁盘使用情况
常用数据处理命令
排序sort -t分割 -k分割后顺序 -n按字符串数值大小 -r反序
sort -t ':' -k 3 -n /etc/passwd /etc/passwd 中根据用户ID数值排序

du 命令磁盘占用大小降序输出du -sh * | sort nr

搜索 grep
bash中可用命令行参数
-c string从string中读取命令处理-i启动接收用户输入的交互shell-l以登录shell形式启动-r用户会受限在默认目录中-s从标准输入中读取命令
进程列表
(pwd ; ls ; cd /etc ; ls ; echo $BASH_SUBSHELL) 这是进程列表,会生成一个子shell执行命令
后台模式
命令结尾用&
jobs -l查看后台模式的进程
进程列表置入后台
(ls;cd /etc;pwd;ls)&
协程 coproc
在后台生成子shell,在子shell中执行命令
coproc My_Job { sleep 10;}
shell内建命令
外部命令(文件系统命令)
存在于bash shell之外的程序,通常存在于/bin /usr/bin /sbin /usr/sbin文件中,用which或type -a命令找到
外部命令执行会创建一个子进程来执行(衍生),消耗大
内建命令
不需要创建子进程来执行,是shell工具的一部分,消耗小
命令别名 alias
alias -p查看系统已设置的; alias li='ls -li' 创建自己的命令别名,但是需要加入永久的环境变量才有用。
--color选项表名终端支持彩色模式的列表

Linux shell和环境变量的更多相关文章
- 【Linux】Shell三类变量的作用域——linux shell “永久环境变量”、“临时环境变量”和"普通变量"之完全解读
2015-05-08 00:15 3896人阅读 评论(10) 收藏 举报 本文章已收录于: 分类: 软件开发进阶(419) 作者同类文章X Unix/Linux杂项(118) 作者同类文章X ...
- Linux Shell基础 环境变量配置文件
source命令:使环境变量配置文件强制生效 source 命令会强制执行脚本中的全部命令,而忽略脚本文件的权限.该命令主要用于让重新配置的环境变量配置文件强制生效.source 命令格式如下: [r ...
- Linux Shell基础 环境变量
环境变量 环境变量和用户自定义变量最主要的区别在于,环境变量是全局变量,而用户自定义变量是局部变量.用户自定义变量只在当前的 Shell 中生效,而环境变量会在当前 Shell 和这个 Shell 的 ...
- Linux编程 21 shell编程(环境变量,用户变量,命令替换)
一.概述 这篇介绍shell的变量使用,跟其实语言一样,都有声明变量,使用变量,在shell中变量允许你临时地将信息存储中shell脚本中,以便和脚本的其他命令一起使用. 1.1 环境变量 在前面章节 ...
- linux笔记:shell基础-环境变量配置文件
source命令(重新读入配置文件,不用重启就直接生效): 环境变量配置文件: linux中的环境变量配置文件(~代表当前用户的家目录): 配置文件读取顺序: /etc/profile 文件的作用:
- linux配置java环境变量(详细)
linux配置java环境变量(详细) 本文完全引用自: http://www.cnblogs.com/samcn/archive/2011/03/16/1986248.html 一. 解压安装jdk ...
- linux配置java环境变量
linux配置java环境变量(详细) 一. 解压安装jdk 在shell终端下进入jdk-6u14-linux-i586.bin文件所在目录, 执行命令 ./jdk-6u14-linux-i586. ...
- Linux里设置环境变量的方法(export PATH)
1.动态库路径的设置 Linux下调用动态库和windows不一样.linux 可执行程序是靠配置文件去读取路径的,因此有些时候需要设置路径 具体操作如下 export LD_LIBRARY_PATH ...
- [转]在Linux里设置环境变量的方法
在Linux里设置环境变量的方法(export PATH) 一般来说,配置交叉编译工具链的时候需要指定编译工具的路径,此时就需要设置环境变量.例如我的mips-linux-gcc编译器在“/opt/a ...
- hadoop搭建杂记:Linux下JDK环境变量的设置(三种配置环境变量的方法)
Linux下JDK环境变量的设置(三种配置环境变量的方法) Linux下JDK环境变量的设置(三种配置环境变量的方法) ①修改/etc/profile文件 如果你的计算机仅仅作为开发使用时推荐使用这种 ...
随机推荐
- nodejs <a>带参数返回路由标记执行数据库操作
今天在测试mongo数据库操作维护的时候,测试了一下直接在表内添加操作列来完成数据的删除操作,直接返回数据库ID,页面表格如下: 通过点击删除,即可完成对应条目数据库删除操作. 1.mongo数据操作 ...
- 2020/03/25 CSS相关知识点
2020-03-25 16:35:03 又是一个风和日丽的下午!今天的内容比较多 真是令人头大 ,手速又慢所以缺的可能比较多,而且这东西还是多靠实践为好. 文件下载地址: https://share. ...
- 2020/03/24 HTML基础复习笔记
2020-03-24 15:49:30 下午好! 这是我开通博客的第二天也是在钉钉上网课的又一天,为了应对考试现在复习到了HTML基础知识,本打算用VS敲想了想还是用了XMind(真的好用!!!)文件 ...
- kafka 学习
https://kafka.apache.org/quickstart C:\W_O_R_K\kafka_2.12-2.2.0\kafka_2.12-2.2.0\bin\windows\zookeep ...
- ABP vNext微服务架构详细教程(补充篇)——单层模板
1. 简介 在之前的<ABP vNext微服务架构详细教程>系列中,我们已经构建了完整的微服务架构实例,但是在开发过程中,我们会发现每个基础服务都包含10个类库,这是给予DDD四层架构下A ...
- 借助5G智能网关实现无人化智慧农业应用
发展智慧农业是新时代的必由之路.依托5G+物联网技术赋能农业生产,能够实现更少的人员需求,更大面积的综合土地管理,更实时精细的生产环境监测,更智能的生产自主管控.5G技术正以其广连接.低时延的优势,助 ...
- mysql5.7_win64位安装
1.下载MySQL压缩包解压缩 2.更改my.ini配置文件 [mysqld] #设置3306端口号 port=3306 #设置MySQL的安装目录 basedir=F:\\JavaSoftware\ ...
- windows音频设备图像隔离audiodg.exe占用内存高(停止与重启audiodg服务)
首先想到的办法是结束该进程,于是在任务管理器里结束进程后,内存是释放了,但是发现发现电脑没有声音去到电脑的system32目录下双击audiodg.exe后任然没有声音解决方法如下(重启audiodg ...
- SpringBoot之独立quartz数据源
背景: 之前项目里面把quartz相关的表跟业务数据库(涉及系统业务的库)融合在一起,后面需要把quartz单独拎出来放在一个数据库里面, 旧的数据源配置(application.properties ...
- windows下 mstsc 远程Ubuntu 图形界面2
采用 xrdp-0.9.2 + xorgxrdp-0.2.0 + xfce ,可完美实现远程,且: 1.支持中断后重新连接上一次连接. 2.支持clipbord跨平台复制. 3.xfce桌面,双机打开 ...