1 source

1-1 source 命令概述

source命令用法:source FileName

  • 简述

source命令(从 C Shell 而来)是bash shell的内置命令。

source又称:"点命令",是一个点符号。"点命令",就是个点符号————.,(从Bourne Shell而来)是source的另一名称。因此,该命令通常也可用命令"."来替代。

例如:source .bash_rc. .bash_rc ,二者等效

同样的,当前脚本中配置的变量也将作为脚本的环境,source(或点)命令通常用于重新执行刚修改的初始化文档,如 .bash_profile 和 .profile 等等。

例如,假如在登录后对 .bash_profile 中的 EDITER 和 TERM 变量做了修改,则能够用source命令重新执行 .bash_profile 中的命令而不用注销并重新登录。

例如,在一个脚本里export $KKK=111 ,假如用./a.sh执行该脚本,执行完毕后,运行 echo $KKK,发现没有值,假如用source来执行 ,然后再echo,就会发现KKK=111。

  • 作用

在当前bash环境下读取、并执行FileName中的命令。常用于重新执行刚修改的初始化文件。

如:/etc/profile(系统环境变量,修改会对所有用户起作用) ; ~/.bash_profile(用户环境变量,针对当前用户) ; bashrc?

通过 source命令 在不重启的情况下使文件生效。

  • 使用范例
source filename

或 (等效于)

. filename

这两个命令都以一个脚本文件为参数,该脚本将作为当前shell的环境执行,即不会启动一个新的子进程。

所有在脚本中设置的变量将成为当前Shell的一部分。

source /etc/profile                   #执行/etc/profile文件,使其生效

1-2 辨析: source filename | sh filename | ./filename

本片段参考文献: Linux下source命令详解 - 博客园

1. 当shell脚本具有可执行权限时,用sh filename与./filename执行脚本是没有区别得。./filename是因为当前目录没有在PATH中,所有”.”是用来表示当前目录的。

2. sh filename 重新建立一个子shell,在子shell中执行脚本里面的语句,该子shell继承父shell的环境变量,但子shell新建的、改变的变量不会被带回父shell,除非使用export。

3. source filename:这个命令其实只是简单地读取脚本里面的语句依次在当前shell里面执行,没有建立新的子shell。那么脚本里面所有新建、改变变量的语句都会保存在当前shell里面。

2 export

2-1 概述

Linux export 命令用于设置显示环境变量

在 shell 中执行程序时,shell 会提供一组环境变量。

export 可新增,修改或删除环境变量,供后续执行的程序使用。

export 的效力仅限于该次登陆操作。

2-2 语法

export [-fnp][变量名称]=[变量设置值]

-f  代表[变量名称]中为函数名称
-n  删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中
-p  列出所有的shell赋予程序的环境变量

[例子]

# export MYENV //定义环境变量
# export -p //列出当前的环境变量 # export MYENV=7 //定义环境变量并赋值
# export LANG='zh_CN.UTF-8' //定义环境变量并赋值
# export -p

3 环境变量

3-1 环境变量 概述

linux系统是多用户的任务系统,对于每个用户都可以指定特定的用户变量。

针对不同程序在不同的环境下运行就需要修改环境变量进行定制,本经验以linux发行版centos为例演示常见的变量设置方法。

在Linux系统下,如果你下载并安装应用程序,很有可能在键入它的名称的时候出现 “command not found ” 的提示内容。

如果每次都到安装目录文件夹内,找到可执行文件来进行操作就太繁琐了。

这涉及到环境变量path的设置问题,而Path 的设置也是在Linux下定制环境变量的一个组成部分。

环境变量,通俗地讲: 操作系统或程序执行时候默认设定的参数,比如: PATH路径变量、JAVA_HOME环境变量等。

当要执行某个命令或程序时,操作系统默认寻找的路径

3-2 环境变量 分类

  • 按照影响范围分

    用户变量局部变量):修改的设置只对某个用户的路径或执行起作用

    系统变量全局变量):影响范围是整个操作系统

  • 按变量的生效时长

    永久变量:通过修改配置文件,配置之后变量永久生效

    临时性变量:使用命令如export等命令设置,设置之后马上生效。当关闭shell时,失效(这种主要用于测试比较多)

3-3 环境变量的启动过程

摘自: Linux 命令详解(一)export 命令 - 博客园

因此,可见:

1)若要配置永久的环境变量,到上述过程中所涉及的文件中配置即可

例如: /etc/profile(修改整个服务器的环境变量) / ~/.bash_profile(修改当前用户的环境变量) / ~/.bashrc / /etc/bashrc

# vi /etc/profile
export PATH=$PATH:/opt/cddb/bin
export LANG='zh_CN.UTF-8'

2)配置完成后,建议使用source命令,使其配置文件立即生效

例如: source /etc/profile

3-3 常用的环境变量

PATH 决定了shell将到哪些目录中寻找命令或程序
HOME 当前用户主目录
HISTSIZE 历史记录数
LOGNAME 当前用户的登录名
HOSTNAME 指主机的名称
SHELL   当前用户Shell类型
LANGUGE  语言相关的环境变量,多语言可以修改此环境变量
MAIL   当前用户的邮件存放目录
PS1   基本提示符,对于root用户是#,对于普通用户是$

3-4 环境变量的实操

  • 显示指定的环境变量
[root@test /]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
  • 显示所有环境变量

    [方式1] env
# env
XDG_SESSION_ID=4
HOSTNAME=sdc248
pg_ctl=/opt/cddb/bin/pg_ctl
SHELL=/bin/bash
TERM=xterm
HISTSIZE=1000
SSH_CLIENT=10.0.11.119 58942 22
SSH_TTY=/dev/pts/1
USER=root
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
MAIL=/var/spool/mail/root
PWD=/
LANG=zh_CN.UTF-8
HISTCONTROL=ignoredups
HOME=/root
SHLVL=6
LOGNAME=root
SSH_CONNECTION=10.0.11.119 58942 10.0.8.248 22
LESSOPEN=||/usr/bin/lesspipe.sh %s
XDG_RUNTIME_DIR=/run/user/0
_=/usr/bin/env

[方式2]export -p

declare -x HISTCONTROL="ignoredups"
declare -x HISTSIZE="1000"
declare -x HOME="/root"
declare -x HOSTNAME="sdc248"
declare -x LANG="zh_CN.UTF-8"
declare -x LESSOPEN="||/usr/bin/lesspipe.sh %s"
declare -x LOGNAME="root"
declare -x LS_COLORS="rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:"
declare -x MAIL="/var/spool/mail/root"
declare -x OLDPWD
declare -x PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
declare -x PWD="/"
declare -x SHELL="/bin/bash"
declare -x SHLVL="6"
declare -x SSH_CLIENT="10.0.11.119 58942 22"
declare -x SSH_CONNECTION="10.0.11.119 58942 10.0.8.248 22"
declare -x SSH_TTY="/dev/pts/1"
declare -x TERM="xterm"
declare -x USER="root"
declare -x XDG_RUNTIME_DIR="/run/user/0"
declare -x XDG_SESSION_ID="4"
declare -x pg_ctl="/opt/cddb/bin/pg_ctl"
  • 临时设置环境变量

    临时变量的设置方法,只对当前会话有效

    这个shell终端关闭或者另外复制一个都是找不到这个变量的。

临时变量一般是用于测试或学习时,使用临时变量对于修改永久变量之前,先确定软件运行或命令执行是否有问题很有帮助。

[设置1个]
[root@mail ~]#export PATH=$PATH:/usr/local/mysql/bin [设置N个]
[root@mail ~]#export PATH=$PATH:/usr/local/mysql/bin

【注】

PATH='$PATH:路径1:路径2:...:路径n' : 可执行文件的路径包括原先设定的路径,也包括从"路径1"到"路径n"的所有路径; 将从"路径1"到"路径n"的所有路径加入到环境变量PATH

当用户输入一个一串字符并按回车后,shell会依次在这些路径里找对应的可执行文件并交给系统核心执行。

  • 永久设置环境变量

    (以配置/etc/profile文件为例)
# vi /etc/profile
export PATH=$PATH:/opt/cddb/bin
export LANG='zh_CN.UTF-8' # source /etc/profile

X 参考文献

[Linux]常用命令之【source|export/env】#点命令/环境变量#的更多相关文章

  1. 【转帖】linux date 显示指定时区的时间 借助TZ 环境变量 export TZ=Asia/Shanghai 或 America/New_York

    linux date 显示指定时区的时间 借助TZ 环境变量 export TZ=Asia/Shanghai 或 America/New_York 2015-02-10 10:58:22 youcha ...

  2. 记一次linux下安装redis, 设置redis服务, 及添加环境变量

    一. redis的安装 cd /opt                                                                                # ...

  3. go语言,golang学习笔记3 用命令下载框架报错问题解决 设置环境变量

    go语言,golang学习笔记3 用命令下载框架报错问题解决 设置环境变量 下载安装:go get github.com/astaxie/beego 首页 - beego: 简约 & 强大并存 ...

  4. Linux常用软件启动、停止、重启命令

    一.PHP 启动命令: /usr/local/php5/sbin/php-fpm 停止命令: pkill php-fpm 二.MySQL 启动命令: /etc/init.d/mysqld start ...

  5. 关于linux下,ls vi等命令失效的解决方法(配置下环境变量出现问题)

    转至:https://www.cnblogs.com/afeiiii/p/13824530.html 配置完环境变量source之后,linux的ls vi命令均失效,报错如下: 解决方法 1.输入  ...

  6. Linux学习Day4:管道符、重定向与环境变量

    仅仅是学习Linux系统的命令还不够,只有把多个命令按照自己想要的方式进行组合使用,才能提高工作效率.今天的内容主要是关于如何把命令组合在一起使用,使得输入的命令更准确.更高效,也为接下来的Shell ...

  7. linux查看java jdk jre安装路径和设置环境变量

    一. 查看java jdk安装路径和设置环境变量 windows: set java_home:查看JDK安装路径 java -version:查看JDK版本 linux: whereis java ...

  8. Linux 下 boost 库的安装,配置个人环境变量

    部分引自: https://blog.csdn.net/this_capslock/article/details/47170313 1. 下载boost安装包并解压缩到http://www.boos ...

  9. linux mint(Ubuntu、Debian) 18修改环境变量

    修改环境变量 sudo gedit /etc/profile sudo gedit /etc/profile 在profile文件的末尾添加以下代码 export JAVA_HOME=/usr/lib ...

  10. Linux CentOS 6.5 使用自带jdk修改环境变量

    首先声明,默认jdk指我们安装完CentOS后系统自带jdk,自己下载安装的jdk只需要下载,解压即可,之后步骤与此文一致 1.查看我们默认jdk的位置 指令: which java 我们去看一下发现 ...

随机推荐

  1. opencv3 7.3 重映射 仿射变换

    重映射的概念 将一幅图像某位置的像素放置到另外一幅图像的指定位置上,需要对非整数像素坐标重映射来表达每个像素的新位置. g(x,y)=f(h(x,y)); 实现重映射 remap()函数 dst(x, ...

  2. 获取客户端ip,请求头伪造ip,解决办法

    可以在请求头加入 X-Forwarder-For 来伪造访问的ip地址 //Nginx支持X-Forwarded-For 配置 proxy_set_header X-Forwarded-For $pr ...

  3. JS笔记(二):数据类型

    镇楼图 Pixiv:torino 三.数据类型 原始类型 原始类型像是string.symbol.number之类的都只能存储原子值,而不能像对象一样随意扩展.但是为了提供额外功能,采取了轻量的对象包 ...

  4. LOJ数列分块入门九题(中)

    #6281. 数列分块入门 5 - 题目 - LibreOJ (loj.ac) 区间开方,区间求和题. 显然,针对区间维护开方操作很难做到,于是考虑其值的性质,显然,int范围内的值最多开方6次就会变 ...

  5. Visual Studio快速清除程序中的空行 删除空行

    Ctrl+H; 正则替换 ^(?([^\r\n])\s)*\r?$\r?\n 快速删除多个空行

  6. 石子合并问题DP

    START: 2021-08-10 14:29:04 1.问题描述: 有N堆石子排成一排,每堆石子有一定的数量.现要将N堆石子并成为一堆.合并的过程只能每次将相邻的两堆石子堆成一堆,每次合并花费的代价 ...

  7. c++ProgrammingConcept

    本文做为总章简单介绍自己的c++学习过程(学习书籍:c++编程思想) 第三章:c++中的c(part1) 第三章:c++中的c(part2)

  8. DNS解析原理(www.baidu.com)

    QueryDns,py程序运行问题解决 关于远程访问数据库问题 这个我用NAVICAT或者是python程序连接都连不上他那个数据库(可能是数据库设定的权限没有开启?) 这个程序真的跑不起来,考虑自己 ...

  9. 【cs231n】knn作业笔记

    完成了assignment-1中knn相关内容的作业,记录一下遇到的知识点和问题 knn.ipynb的内容大致包括: 1.数据集的建立 主要是通过切片函数,如下图选取前5000张图片和其标记作为训练数 ...

  10. 使用NTC计算温度,增加计算精度的算法

    uint16_t uGetPCB_Temperature(void) { uint16_t x; float Adcn; float k; Adcn = userADC_var.ADCMeasureV ...