linux中env,export, set的区别
unix shell的变量分类
在Shell中有三种变量:内部变量,环境变量,用户变量。
内部变量:系统提供,不用定义,不能修改
环境变量:系统提供,不用定义,可以修改,可以利用export将用户变量转为环境变量.
用户变量:用户定义,可以修改
(1)内部变量(系统变量,环境变量,参数变量,预定义变量)
内部变量是Linux所提供的一种特殊类型的变量,这类变量在程序中用来作出判断。
在shell 程序内这类变量的值是不能修改的。
表示方法描述
$n $1 表示第一个参数,$2 表示第二个参数 ...
$# 命令行参数的个数
$0 当前程序的名称
$? 前一个命令或函数的返回码
$* 以"参数1 参数2 ... " 形式保存所有参数
$@ 以"参数1" "参数2" ... 形式保存所有参数
$$ 本程序的(进程ID号)PID
(2) 环境变量
Linux环境(也称为shell环境)由许多变量及这些变量的值组成,由这些变量和变量的值决定环境外观。
这些变量就是环境变量。
包括两部分,一是,由系统设置的,主要包括:HOME,LOGNAME,MAIL,PATH,PS1,PWD,SHELL,TERM
二是,用户在命令行中设置的,使用export命令,但是用户注销时值将丢失
(3)用户变量(私有变量,本地变量)
在命令行中自己设定的.。
linux的export命令
linux的export命令linux系统中的命令export命令可以将自定义变量设定为系统环境变量。
那么它的具体语法是什么呢?下面由店铺为大家整理了linux 的export命令的相关知识,希望大家喜欢!Linux的export命令详解export:将自定义变量设定为系统环境变量(当前shell中有效)功能说明:设置或显示环境变量。
语法:export[-fnp][变量名称]=[变量设置值]补充说明:在shell中执行程序时,shell会提供一组环境变量。
export可新增,修改或删除环境变量,供后续执行的程序使用。
export的效力仅及于该此登陆操作。
参数:-f 代表[变量名称]中为函数名称。
-n 删除指定的变量。
变量实际上并未删除,只是不会输出到后续指令的执行环境中。
-p 列出所有的shell赋予程序的环境变量。
在shell中输入export可以输出当前的变量。
也可以通过export TARGET=arm-linux-这样的命令设定环境变量,export PATH=$PATH:/.../bin。
当执行一个脚本时,新开了一个子shell,继承父shell中的环境变量,但是在子shell中定义的变量是不能被带回到父shell中。
/etc/environment是设置整个系统的环境,而/etc/profile是设置所有用户的环境,前者与登录用户无关,后者与登录用户有关。
如果同一个变量在用户环境(/etc/profile)和系统环境(/etc/environment)有不同的值那应该是以用户环境为准了。
另外设置环境变量可以在/etc/profile中,区别如下:/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置./etc/bashrc:为每一个运行bashshell的用户执行此文件.当bash shell被打开时,该文件被读取.~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.~/.bashrc:该文件包含专用于你的bashshell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取.~/.bash_logout:当每次退出系统(退出bashshell)时,执行该文件.另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是"父子"关系.~/.bash_profile 是交互式、login 方式进入 bash 运行的~/.bashrc 是交互式 non-login 方式进入 bash 运行的通常二者设置大致相同,所以通常前者会调用后者。
EXPORT、IMPORT、EXTERN含义
EXPORT、IMPORT、EXTERN含义2012-12-11 15:54:59| 分类:嵌入式软件 | 标签:启动代码伪指令|举报|字号订阅Export表示这个要输出给别的文件用的变量Import表示这个是从别的文件输入的变量一般export和import是相反的。
Extern表示这个要用的是在别的文件已经定义了EXPORT伪指令用于在程序中声明一个全局的标号,该标号可以在其他文件中引用。
EXPORT可用GLOBAL代替。
标号在程序中区分大小写,[WEAK]选项声明其他的同名标号优先于该标号被引用。
EXPORT test;声明一个可全局引用的标号。
IMPORT伪指令用于通知编译器要使用的标号在其他的源文件中定义,但要在当前源文件中引用,而且无论当前源文件是否引用该标号,该标号均会被加入到当前源文件的符号表中,标号在程序中区分大小写。
[WEAK]选项表示当所有源文件都没有定义这样的标号时,编译器也不会给出错误信息,在大多数情况下该标号置为0,若该标号为B或BL指令引用,则将B或BL指令置为NOP操作。
例:IMPORT Main ;通知编译器当前文件要引用标号Main,但Main在其他源文件中定义。
EXTERN伪指令用于通知编译器要使用的标号在其他源文件中定义,但要在当前文件中引用,如果当前源文件实际并没有引用该标号,该标号不会被加入到当前源文件的符号表中。
标号在程序中区分大小写,[WEAK]选项表示当所有的源文件都没有定义这样的标号时,编译器也不会给出错误信息,在多数情况下将该标号置为0,如该标号为B或BL指令引用,则将B或BL指令置为NOP操作。
例:EXTERN Main;通知编译器当前源文件要引用标号Main,但Main在其他源文件中定义。
linux环境变量 export命令详解
由host $ exportDVSDK="${HOME}/ti-dvsdk_dm368-evm_xx_xx_xx_xx"引发的问题1、${HOME}:首先,HOME 是个变量,它代表你的home 目录,变量前必须加上$ 符号,否则会报错usr/local/dvsdk为dvsdk的destination folder 由#echo $DVSDK测试环境变量添加成功否2、想要使得开机时自动加载这个环境变量免除以后每次设置,可将其写入/etc/re.localLinux export 命令功能说明:设置或显示环境变量。
(比如我们要用一个命令,但这个命令的执行文件不在当前目录,这样我们每次用的时候必须指定执行文件的目录,麻烦,在代码中先执行export,这个相当于告诉程序,执行某某东西时,需要的文件或什么东东在这些目录里)语法:export [-fnp][变量名称]=[变量设置值]补充说明:在shell中执行程序时,shell会提供一组环境变量。
export可新增,修改或删除环境变量,供后续执行的程序使用。
export的效力仅及于该此登陆操作。
参数:-f 代表[变量名称]中为函数名称。
-n 删除指定的变量。
变量实际上并未删除,只是不会输出到后续指令的执行环境中。
-p 列出所有的shell赋予程序的环境变量。
一个变量创建时,它不会自动地为在它之后创建的shell进程所知。
而命令export可以向后面的shell传递变量的值。
当一个shell脚本调用并执行时,它不会自动得到原为脚本(调用者)里定义的变量的访问权,除非这些变量已经被显式地设置为可用。
export命令可以用于传递一个或多个变量的值到任何后继脚本。
----《UNIX教程》在 linux 里设置环境变量的方法( export PATH )一般来说,配置交叉编译工具链的时候需要指定编译工具的路径,此时就需要设置环境变量。
例如我的mips-linux-gcc编译器在“/opt/au1200_rm /build_tools/bin”目录下,build_tools就是我的编译工具,则有如下三种方法来设置环境变量:1、直接用export命令:#export PATH=$PATH:/opt/au1200_rm/build_tools/bin查看是否已经设好,可用命令export查看:[root@localhost bin]#exportdeclare -x BASH_ENV="/root/.bashrc"declare -x G_BROKEN_FILENAMES="1"declare -x HISTSIZE="1000"declare -x HOME="/root"declare -x HOSTNAME="localhost.localdomain"declare -x INPUTRC="/etc/inputrc"declare -x LANG="zh_CN.GB18030"declare -x LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"declare -x LESSOPEN="|/usr/bin/lesspipe.sh %s"declare -x LOGNAME="root"declare -xLS_COLORS="no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40; 33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=01;32:*.cmd=01 ;32:*.exe=01;32:*.com=01;32:*.btm=01;32:*.bat=01;32:*.sh=01;32:*. csh=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=0 1;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.bz= 01;31:*.tz=01;31:*.rpm=01;31:*.cpio=01;31:*.jpg=01;35:*.gif=01;35 :*.bmp=01;35:*.xbm=01;35:*.xpm=01;35:*.png=01;35:*.tif=01;35:" declare -x MAIL="/var/spool/mail/root"declare -x OLDPWD="/opt/au1200_rm/build_tools"declare -xPATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bi n:/usr/X11R6/bin:/root/bin:/opt/au1200_rm/build_tools/bin"declare -x PWD="/opt/au1200_rm/build_tools/bin"declare -x SHELL="/bin/bash"declare -x SHLVL="1"declare -x SSH_ASKPASS="/usr/libexec/openssh/gnome-ssh-askpass" declare -x SSH_AUTH_SOCK="/tmp/ssh-XX3LKWhz/agent.4242"declare -x SSH_CLIENT="10.3.37.152 2236 22"declare -x SSH_CONNECTION="10.3.37.152 2236 10.3.37.186 22"declare -x SSH_TTY="/dev/pts/2"declare -x TERM="linux"declare -x USER="root"declare -x USERNAME="root"可以看到灰色部分有设置的路径,说明环境变量已经设好,PATH里面已经有了我要加的编译器的路径。
例谈Bash与Tcsh的主要区别
例谈Bash与Tcsh的主要区别作者:石庆冬来源:《电脑知识与技术·学术交流》2008年第33期摘要:Bash与tcsh是目前Unix/Linux操作系统中两种流行的shell。
通过举例,对这两种shell常用的功能和特性进行了对比,内容包括变量赋值、数组、环境设置、命令参数、数值计算、条件流程控制、循环语句和信号处理等。
这些比较是对这二者主要区别的一个很好的总结,能够为bash与tcsh的学习和使用者提供便利和帮助。
关键词:Unix;Linux;Bash;Tcsh中图分类号:TP316文献标识码:A文章编号:1009-3044(2008)33-1390-03Main Differences between Bash and Tcsh by ExamplesSHI Qing-dong(Motorola (China) Technologies Ltd., Beijing 100102, China)Abstract: Bash and tcsh are two kinds of popular shell in the present Unix/Linux operating system. Through some examples, this paper has carried on the contrast to more commonly used functions and the characteristics of the two kinds of shell, the content including variable assignment, array, environment setting, command parameters, numerical calculus, condition flow control, looping construct, signal-catching and so on. The contrast is a very good summary that distinguish the two, which can provides convenience and help for the bash and tcsh learners and users.Key words: Unix; Linux; Bash; Tcsh1 引言Shell是提供用户与操作系统之间交互的特殊程序,它是一个解释器,解释用户输入的命令。
Linux中set,env和export这三个命令的区别
中set,env和export这三个命令的区别
set命令显示当前shell的变量,包括当前用户的变量;
env命令显示当前用户的变量;
export命令显示当前导出成用户变量的shell变量。
每个shell有自己特有的变量(set)显示的变量,这个和用户变量是不同的,当前用户变量和你用什么shell无关,不管你用什么shell都 在,比如HOME,SHELL等这些变量,
但shell自己的变量不同shell是不同的比如bashargcbash等这些变量只有set才会显示是bash特有的export不加参数的时候显示哪些变量被导出成了用户变量因为一个shell自己的变可以通过export导出变成一个用户变量
Linux中 set,env和 export这三个命令的区别
linux创建用户和用户组
linux创建⽤户和⽤户组Linux创建⽤户、⽤户组及删除在创建⽤户时,需要为新建⽤户指定⼀⽤户组,如果不指定其⽤户所属的⼯作组,⾃动会⽣成⼀个与⽤户名同名的⼯作组。
创建⽤户user1的时候指定其所属⼯作组users,例:useradd –g users user1⼀、创建⽤户:1、使⽤命令 useradd例:useradd user1——创建⽤户user1useradd –e 12/30/2009 user2——创建user2,指定有效期2009-12-30到期⽤户的缺省UID从500向后顺序增加,500以下作为系统保留账号,可以指定UID,例:useradd –u 600 user32、使⽤ passwd 命令为新建⽤户设置密码例:passwd user1注意:没有设置密码的⽤户不能使⽤。
3、命令 usermod 修改⽤户账户例:将⽤户 user1的登录名改为 u1,usermod –l u1 user1例:将⽤户 user1 加⼊到 users组中,usermod –g users user1例:将⽤户 user1 ⽬录改为/users/us1usermod –d /users/us1 user14、使⽤命令 userdel 删除⽤户账户例:删除⽤户user2userdel user2例:删除⽤户 user3,同时删除他的⼯作⽬录userdel –r user35、查看⽤户信息id命令查看⼀个⽤户的UID和GID, 例:查看user4的idid user4finger命令 ——可以查看⽤户的主⽬录、启动shell、⽤户名、地址、电话等信息例:finger user4⼆、⽤户组:6、命令 groupadd创建⽤户组groupadd –g 888 users创建⼀个组users,其GID为8887、命令 gpasswd为组添加⽤户只有root和组管理员能够改变组的成员:例:把 user1加⼊users组gpasswd –a user1 users例:把 user1退出users组gpasswd –d user1 users8、命令groupmod修改组groupmod –n user users 修改组名user为users9、groupdel删除组groupdel users 删除组users查看端⼝命令:netstat -tunlpchmod命令: 第2~10个字符当中的每3个为⼀组,左边三个字符表⽰所有者权限,中间3个字符表⽰与所有者同⼀组的⽤户的权限,右边3个字符是其他⽤户的权限。
linux 生效命令
linux 生效命令
1.修改配置文件:在Linux操作系统下,有很多配置文件存放在/etc 目录下,例如 /etc/profile、/etc/bash.bashrc、
/etc/sysctl.conf 等。
通过修改这些配置文件,可以让一些设置或者环境变量生效。
2. source 命令:在 Linux 中,source 命令可以让某个 shell 脚本或者配置文件中的设置在当前 shell 环境下生效。
例如,source /etc/profile 命令可以让 /etc/profile 文件中的环境变量在当前shell 环境下生效。
3. export 命令:export 命令可以把一个变量导出为环境变量,让其在当前 shell 环境下生效。
例如,export
PATH=$PATH:/usr/local/bin 命令可以把 /usr/local/bin 目录添
加到 PATH 环境变量中,让其在当前 shell 环境下生效。
4. alias 命令:alias 命令可以给一个命令设置别名,让其在当前 shell 环境下生效。
例如,alias ll='ls -l' 命令可以让 ll 命令代替 ls -l 命令,在当前 shell 环境下生效。
5. systemctl 命令:systemctl 命令可以让一些服务在 Linux 系统启动的时候自动启动。
例如,systemctl enable sshd 命令可以让 sshd 服务在系统启动的时候自动启动。
以上是 Linux 下让命令生效的几种方式,大家可以根据需要选择合适的方式来让命令生效。
- 1 -。
LINUX基础实验报告
LINUX基础实验报告实验⼀:主要是介绍Linux系统概况,⽆运⾏代码。
实验⼆:Linux的基本操作重要知识点[Tab]使⽤Tab键来进⾏命令补全,Tab键⼀般键盘是在字母Q旁边,这个技巧给你带来的最⼤的好处就是当你忘记某个命令的全称时你可以只输⼊它的开头的⼀部分然后按下Tab键就可以得到提⽰或者帮助完成,当然不⽌补全命令,补全⽬录,补全命令参数都是没问题的。
Ctrl+c键⽤来强⾏终⽌当前程序。
⼀些其他常⽤快捷键按键作⽤Ctrl+d键盘输⼊结束或退出终端Ctrl+s暂定当前程序,暂停后按下任意键恢复运⾏Ctrl+z将当前程序放到后台运⾏,恢复到前台为命令fgCtrl+a将光标移⾄输⼊⾏头,相当于Home键Ctrl+e将光标移⾄输⼊⾏末,相当于End键Ctrl+k删除从光标所在位置到⾏末Alt+Backspace向前删除⼀个单词Shift+PgUp将终端显⽰向上滚动Shift+PgDn将终端显⽰向下滚动通配符是⼀种特殊语句,主要有星号(*)和问号(?),⽤来对对字符串进⾏模糊匹配(⽐如⽂件名,参数名)。
当查找⽂件夹时,可以使⽤它来代替⼀个或多个真正字符;当不知道真正字符或者懒得输⼊完整名字时,常常使⽤通配符代替⼀个或多个真正的字符。
终端⾥⾯输⼊的通配符是由 Shell 处理的,不是由所涉及到命令语句处理的,它只会出现在命令的“参数值”⾥(它不⽤在命令名称⾥,命令不记得,那就⽤Tab补全)。
当 Shell 在“参数值”中遇到了通配符时,Shell 会将其当作路径或⽂件名去在磁盘上搜寻可能的匹配:若符合要求的匹配存在,则进⾏代换(路径扩展);否则就将该通配符作为⼀个普通字符传递给“命令”,然后再由命令进⾏处理。
总之,通配符实际上就是⼀种 Shell 实现的路径扩展功能。
在通配符被处理后, Shell 会先完成该命令的重组,然后再继续处理重组后的命令,直⾄执⾏该命令。
Shell 常⽤通配符:字符含义*匹配 0 或多个字符匹配任意⼀个字符[list]匹配 list 中的任意单⼀字符[!list]匹配除list 中的任意单⼀字符以外的字符[c1-c2]匹配 c1-c2 中的任意单⼀字符如:[0-9] [a-z]{string1,string2,...}匹配 sring1 或 string2 (或更多)其⼀字符串{c2..c2}匹配 c1-c2 中全部字符如{1..10}在linux命令⾏中获取帮助使⽤man 命令通常情况下,man ⼿册⾥⾯的内容都是英⽂的,这就要求你有⼀定的英⽂基础。
set和setenv
set和setenv今天⽤set设置PATH变量(加⼀个路径),发现虽然echo的时候显⽰修改成功了,实际执⾏命令的时候确没有去那个路径查找;当前shell 是c shell(csh).在⽹上找了⼀些材料,总结如下:1.说明使⽤set和setenv命令可以设置shell选项或者列出shell变量,其中setenv 是csh的命令,在bash中⽤export命令,alias作⽤相当windows下的快捷⽅式。
2.语法格式set 变量名=内容set 变量名=(内容1 内容2 )set 变量名="内容1 内容2"setenv 变量名内容setenv 变量名 "内容1 内容2"setenv 变量名 '内容1 内容2'alias 简化名称原⽂件名alias 简化名称 "原⽂件名参数"3。
set主要是⽤来设置变量,这⾥的变量是普通变量,就像C语⾔⾥⼀样,使⽤⼀个变量以前要申明⼀下。
setenv中的env就是环境environment的简写,这个命令是⽤来设置环境变量的,譬如说设置⽂件路径、本地显⽰啊什么的,举个例,如果想调⽤服务器的软件在本地显⽰,⽤这个命令:setenv DISPLAY 1xx.1xx.1xx.1xx:0 。
在bash中export命令和csh中的setenv命令类似。
4。
环境变量和内部变量:后者不能被⼦进程继承(如同C⾥的局部变量)--改环境变量就会⾃动改内部变量,反之不然。
“set”可给出内部变量列表,“env”可给出环境变量列表。
继承只对环境变量有效sh: PATH=/usr/bin:$PATH ; export PATH--注意:在export前为内部变量,之后为环境变量。
Csh: set setenv PATH /usr/bin:$PATH--注意:在csh中环境变量的赋值(setenv)没有等号,⽽内部变量的赋值(set)有等号。
《鸟哥的linux私房菜(基础篇)》学习笔记
《鸟哥的linux私房菜(基础篇)》学习笔记----------李晶第一部分:linux的规划与安装这里个人相对来说比较熟悉,对于如何安装linux书上有详细介绍。
不过我一般用的都是ubuntu,这个发行版的安装并不是很复杂。
1.linux历史与简介:计算机是由一堆硬件所组成的,操作系统是为了更加有效地控制和使用这些硬件资源。
我们最熟悉的windows就是一种操作系统。
但是linux是完全不同于windows的一种操作系统。
众所皀知癿,Linux癿核心是由Linus Torvalds在1991年癿时候给他开发出来的。
linux沿袭了unix 的许多良好的特性,最重要的也是现今非常受欢迎的原因之一就是linux是开源的,并且在其之上的软件也是免费开源的,以此为基本最后发展出来了开源社区,对整个计算机科学的发展都有很重要的作用。
linux目前有着众多的发行版,Red Hat, SuSE,Ubuntu, Fedora, Debian。
我个人使用的是ubuntu-10.10。
linux的发展路径:Unix癿前身是由贝尔实验室(Bell lab.)癿Ken Thompson利用汇编语言写成的,后来在1971-1973年间由Dennis Ritchie以C语言重新改写,才称为Unix。
1977年由Bill Joy开发出BSD (Berkeley Software Distribution),这些称为Unix-like的操作系统。
1984年由Andrew Tannenbaum制作出Minix操作系统,该系统可以提供原始码以及软件;1984年由Richard Stallman提倡GNU计划,倡导自由软件(Free software),强调其软件可以自由获得,修改,再发行。
1991年由芬兰大学生Linus Torvalds开发出Linux操作系统。
Linux成功主要在于:Minix(Unix), GNU, Internet, POSIX 及虚拟团队的产生。
