在 shell 中执行程序时,shell 会提供一组环境变量。export 可新增,修改或删除环境变量,供后续执行的程序使用。export 的效力仅限于该次登陆操作。
什么是环境变量?环境变量:在其进程的子进程中继续有效自定义变量:无法延伸到子进程中export就是将变量设置成环境变量
环境变量的作用: 当你想输入一个变量(例如date命令)而没有指定系统执行date的路径,linux就会求助于$PATH环境变量修改环境变量:export PATH= $ PATH:/home/roc/operation_tools这里是将/home/roc/operation_tools环境变量加入了进去(如果在添加变量的时候不添加export,即该变量为自定义变量)举例说明:
hr@ZERO看你:~$ var1=one hr@ZERO看你:~$ var2=two hr@ZERO看你:~$ echo $var1 one hr@ZERO看你:~$ echo $var2 two hr@ZERO看你:~$ export var1 hr@ZERO看你:~$ bash hr@ZERO看你:~$ echo $var1 one hr@ZERO看你:~$ echo $var2 hr@ZERO看你:~$var1被export设置成环境变量后,新启动一个bash子进程后,依然有效,而var2这个自定义变量是不能被继承到其子进程中的。
语法
export [-fnp][变量名称]=[变量设置值]参数
-f 代表[变量名称]中为函数名称。 -n 删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。 -p 列出所有的shell赋予程序的环境变量。1.查询命令
hr@ZERO看你:~$ echo $SHELL /bin/bash2.列出所有环境变量
hr@ZERO看你:~$ export declare -x HOME="/home/hr" declare -x HOSTTYPE="x86_64" declare -x LANG="C.UTF-8" declare -x LESSCLOSE="/usr/bin/lesspipe %s %s" declare -x LESSOPEN="| /usr/bin/lesspipe %s" declare -x LOGNAME="hr" 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=00: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:*.zst=01;31:*.tzst=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:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=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:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:" declare -x NAME="ZERO看你" declare -x OLDPWD declare -x PATH="/usr/hcc_riscv32/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/mnt/c/Program Files/WindowsApps/CanonicalGroupLimited.Ubuntu18.04onWindows_2020.1804.7.0_x64__79rhkp1fndgsc:/mnt/c/Windows/system32:/mnt/c/Windows:/mnt/c/Windows/System32/Wbem:/mnt/c/Windows/System32/WindowsPowerShell/v1.0/:/mnt/c/Windows/System32/OpenSSH/:/mnt/c/Program Files (x86)/NVIDIA Corporation/PhysX/Common:/mnt/c/Program Files/NVIDIA Corporation/NVIDIA NvDLISR:/mnt/c/Program Files (x86)/Intel/Intel(R) Management Engine Components/DAL:/mnt/c/Program Files/Intel/Intel(R) Management Engine Components/DAL:/mnt/c/Program Files/Intel/WiFi/bin/:/mnt/c/Program Files/Common Files/Intel/WirelessCommon/:/mnt/f/bin:/mnt/c/WINDOWS/system32:/mnt/c/WINDOWS:/mnt/c/WINDOWS/System32/Wbem:/mnt/c/WINDOWS/System32/WindowsPowerShell/v1.0/:/mnt/c/WINDOWS/System32/OpenSSH/:/mnt/c/Users/黄睿/.dnx/bin:/mnt/c/Program Files/Microsoft DNX/Dnvm/:/mnt/c/Program Files/Microsoft SQL Server/120/Tools/Binn/:/mnt/c/Program Files/Microsoft SQL Server/130/Tools/Binn/:/mnt/c/Program Files (x86)/Windows Kits/10/Windows Performance Toolkit/:/mnt/c/ProgramData/Microsoft/Windows/Start Menu/Programs/微信/weixin:/mnt/d/Microsoft VS Code/bin:/snap/bin" declare -x PWD="/home/hr" declare -x SHELL="/bin/bash" declare -x SHLVL="2" declare -x TERM="xterm-256color" declare -x USER="hr" declare -x WSLENV="" declare -x WSL_DISTRO_NAME="Ubuntu-18.04" declare -x XDG_DATA_DIRS="/usr/local/share:/usr/share:/var/lib/snapd/desktop"结果是当前用户下的bash的所有环境变量 3.比如我们常见的PATH:
hr@ZERO看你:~$ echo $PATH /usr/hcc_riscv32/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/mnt/c/Program Files/WindowsApps/CanonicalGroupLimited.Ubuntu18.04onWindows_2020.1804.7.0_x64__79rhkp1fndgsc:/mnt/c/Windows/system32:/mnt/c/Windows:/mnt/c/Windows/System32/Wbem:/mnt/c/Windows/System32/WindowsPowerShell/v1.0/:/mnt/c/Windows/System32/OpenSSH/:/mnt/c/Program Files (x86)/NVIDIA Corporation/PhysX/Common:/mnt/c/Program Files/NVIDIA Corporation/NVIDIA NvDLISR:/mnt/c/Program Files (x86)/Intel/Intel(R) Management Engine Components/DAL:/mnt/c/Program Files/Intel/Intel(R) Management Engine Components/DAL:/mnt/c/Program Files/Intel/WiFi/bin/:/mnt/c/Program Files/Common Files/Intel/WirelessCommon/:/mnt/f/bin:/mnt/c/WINDOWS/system32:/mnt/c/WINDOWS:/mnt/c/WINDOWS/System32/Wbem:/mnt/c/WINDOWS/System32/WindowsPowerShell/v1.0/:/mnt/c/WINDOWS/System32/OpenSSH/:/mnt/c/Users/黄睿/.dnx/bin:/mnt/c/Program Files/Microsoft DNX/Dnvm/:/mnt/c/Program Files/Microsoft SQL Server/120/Tools/Binn/:/mnt/c/Program Files/Microsoft SQL Server/130/Tools/Binn/:/mnt/c/Program Files (x86)/Windows Kits/10/Windows Performance Toolkit/:/mnt/c/ProgramData/Microsoft/Windows/Start Menu/Programs/微信/weixin:/mnt/d/Microsoft VS Code/bin:/snap/bin修改前代码:
* it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ #include <linux/err.h> #include <linux/of.h> #include <linux/slab.h>修改后的代码:
* it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ /********************is me add it*********************/ #include <linux/err.h> #include <linux/of.h> #include <linux/slab.h>运行git status查看我们工作区的修改的文件
ts@ts-OptiPlex-7070:~/bin/kernel/msm-4.14$ git status 头指针分离于 d8110c633b15 尚未暂存以备提交的变更: (使用 "git add <文件>..." 更新要提交的内容) (使用 "git checkout -- <文件>..." 丢弃工作区的改动) 修改: drivers/mmc/core/mmc.cgit 告诉一个mmc.c文件修改了。但是没有告诉我们这个文件里 具体修改了哪些内容。此时git diff 就排上的用场。 他可以用于比较现在 工作区(未提交到暂存区) 与 暂存区具体的修改变化。 运行一下git diff:
ts@ts-OptiPlex-7070:~/bin/kernel/msm-4.14$ git diff diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c index 32619af7d915..53e2720f9c82 100644 --- a/drivers/mmc/core/mmc.c +++ b/drivers/mmc/core/mmc.c @@ -9,7 +9,7 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ - +/********************is me add it*********************/ #include <linux/err.h> #include <linux/of.h> #include <linux/slab.h>具体的变化就一目了然。 我们再来看一下运行 git diff HEAD
ts@ts-OptiPlex-7070:~/bin/kernel/msm-4.14$ git diff HEAD diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c index 32619af7d915..53e2720f9c82 100644 --- a/drivers/mmc/core/mmc.c +++ b/drivers/mmc/core/mmc.c @@ -9,7 +9,7 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ - +/********************is me add it*********************/ #include <linux/err.h> #include <linux/of.h> #include <linux/slab.h>两次的运行结果是一样的。 解释一下:
git diff:是查看 workspace(工作区) 与 index(暂存区) 的差别的。 git diff --cached:是查看index(暂存区) 与 local repositorty(本地仓库) 的差别的。 git diff HEAD:是查看 workspace 和 local repository 的差别的。(HEAD 指向的是 local repository 中最新提交的版本)
格式:
$ echo string类型: 1
$ echo "a test" //显示字符串a test $ echo It is a test//双引号完全可以省略,与上面实例效果一致2
$ read name //显示变量 ok $ echo "$name" ok3
$ echo -e "OK! \n" // -e 开启转义 OK! $4
$ echo "1111111" > file //显示结果定向至文件5
$ echo '$name\"'//原样输出,用单引号表示不进行转义或取变量 $name\"6
$ echo `date` 显示命令执行结果 2020年 10月 29日 星期四 11:41:53 CTSapt 命令执行需要超级管理员权限(root)
语法
apt [options] [command] [package ...] options:可选,选项包括 -h(帮助),-y(当安装过程提示选择全部为"yes"),-q(不显示安装的过程)等等。command:要进行的操作。package:安装的包名。例子
列出所有可更新的软件清单命令:sudo apt update 更新指定的软件:sudo apt update <package_name> 安装指定的软件:sudo apt install <package_name> 安装多个软件包:sudo apt install <package_1> <package_2> 删除软件包:sudo apt remove <package_name> 查找软件包: sudo apt search <keyword> 列出所有已安装的包:apt list --installed 列出所有已安装的包的版本信息:apt list --all-versions 显示软件包具体信息,例如:版本号,安装大小,依赖关系等等:sudo apt show <package_name>