[zz]Linux中的/etc/profile文件

摘要:
source命令通常用于重新执行新修改的初始化文件,使其立即生效,而无需注销并再次登录。Linux/etc/profile文件的更改将涉及系统环境,即Linux环境变量。要学习Linux,您需要了解Linux概要文件的相关原理。这里我们将详细分析该文件。1.Linux是一个多用户操作系统。2.环境变量通常在/etc/profile文件中进行修改。此处修改的内容适用于所有用户。

【一、让/etc/profile文件修改后立即生效】

方法1:
让/etc/profile文件修改后立即生效 ,可以使用如下命令:
# .  /etc/profile
注意: . 和 /etc/profile 有空格
方法2:
让/etc/profile文件修改后立即生效 ,可以使用如下命令:
# source /etc/profile

附:Linux中source命令的用法
source命令:
source命令也称为“点命令”,也就是一个点符号(.)。source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。
用法:
source filename 或 . filename
source命令除了上述的用途之外,还有一个另外一个用途。在对编译系统核心时常常需要输入一长串的命令,如:
make mrproper
make menuconfig
make dep
make clean
make bzImage
…………
如果把这些命令做成一个文件,让它自动顺序执行,对于需要多次反复编译系统核心的用户来说会很方便,而用source命令就可以做到这一点,它的作用就是把一个文件的内容当成shell来执行,先在linux的源代码目录下(如/usr/src/linux-2.4.20)建立一个文件,如make_command,在其中输入一下内容:
make mrproper &&
make menuconfig &&
make dep &&
make clean &&
make bzImage &&
make modules &&
make modules_install &&
cp arch/i386/boot/bzImage /boot/vmlinuz_new &&
cp System.map /boot &&
vi /etc/lilo.conf &&
lilo -v
文件建立好之后,每次编译核心的时候,只需要在/usr/src/linux-2.4.20下输入:
source make_command
即可,如果你用的不是lilo来引导系统,可以把最后两行去掉,配置自己的引导程序来引导内核。
顺便补充一点,&&命令表示顺序执行由它连接的命令,但是只有它之前的命令成功执行完成了之后才可以继续执行它后面的命令。
【二、Linux /etc/profile文件详解】

Linux /etc/profile文件的改变会涉及到系统的环境,也就是有关Linux环境变量的东西,学习Linux要了解Linux profile文件的相关原理,这里对则以文件进行具体分析。这里修改会对所有用户起作用。

  1、Linux是一个多用户的操作系统。每个用户登录系统后,都会有一个专用的运行环境。通常每个用户默认的环境都是相同的,这个默认环境实际上就是一组环境变量的定义。用户可以对自己的运行环境进行定制,其方法就是修改相应的系统环境变量。

  2、常在/etc/profile文件中修改环境变量,在这里修改的内容是对所有用户起作用的。以下主要操作将在该文件中进行。

  3、如何添加环境变量。

  例如添加”NAME=liheng“ 。在profile文件的最后添加如下内容export NAME=liheng

  变量值liheng可以加引号也可以不加,效果一样。

  4、在profile文件添加或修改的内容需要注销系统才能生效。

  5、重复定义变量怎样理解。

  经常出现的是对PATH变量的定义。

  例如:在peofile文件默认对PATH变量都有设置PATH=¥¥¥¥¥¥¥(记不住了),在以后可能在对PATH设置,一般都加在profile 文件的最后PATH=······(打个比方)。而系统之中认定的PATH=·······¥¥¥¥¥¥¥¥¥,也就是说相同名字的环境变量,后写入的先起作用(通俗地讲)。大家一定要注意。

  6、特殊字符介绍。

  例如在profile中有如下内容,通过以下内容说明特殊符号的用法。

  export A=/q/jing:aaa/cc/ld

  export B=.:/liheng/wang export A=/cd/cdr:$A

  大家注意红色的符号:

  : 表示并列含义,例如A变量值有多个,用:符号进行分离。

  . 表示你操作的当前目录。例如pap命令会查找B环境变量。

  在/home键入pap命令,系统首先在/home目录下(即当前路径)查找关于 B 的内容,linuxidc.com">www.linuxidc.com如果没有在/liheng/wang目录下查找关于B的内容。 $ 表示该变量本次定义之前的值,例如$A代表/q/jing:aaa/cc/ld。也就是说 A=/cd/cdr:/q/jing:aaa/cc/ld

  7、使用env命令显示所有的环境变量 。在命令提示符下键入env就行了。

  set命令显示所有本地定义的Shell变量。

  8、常见的环境变量

  PATH:决定了shell将到哪些目录中寻找命令或程序

  HOME:当前用户主目录

  MAIL:是指当前用户的邮件存放目录。

  SHELL:是指当前用户用的是哪种Shell。

  HISTSIZE:是指保存历史命令记录的条数。

  LOGNAME:是指当前用户的登录名。

  HOSTNAME:是指主机的名称,许多应用程序如果要用到主机名的话,通常是从这个环境变量中来取得的。

  LANG/LANGUGE:是和语言相关的环境变量,使用多种语言的用户可以修改此环境变量。

  PS1:是基本提示符,对于root用户是#,对于普通用户是$。

  PS2:是附属提示符,默认是“>”。可以通过修改此环境变量来修改当前的命令符,比如下列命令会将提示符修改成字符串“Hello,My NewPrompt :) ”。

  # PS1=” Hello,My NewPrompt :) “

  9、使用修改.bashrc文件(在用户的家目录下)进行环境变量的编辑,只对当前用户有用。使用修改 /etc/profile 文件进行环境变量的编辑,是对所有用户有用。大家一定要注意区别。

  10、Linux profile文件在系统启动时将被运行。大家可以在里面加入其他命令,但是一定要加正确,不然的话系统会启动不起来的。

【三、/etc/profile和.profile文件】

两个重要的profile文件
在UNIX/Xenix系统中有两个对用户而言必不可少的文件——etc目录下的profile文件和
用户主目录($HOME)下的.profile文件。前者是系统文件,对系统下全体用户起作用,后者是
用户自己的"私人"文件。
这两个文件的功能类似于DOS系统下的Autoexec.bat文件,不同之处在于Autoexec.bat文
件可以为空,而这两个文件内容不仅不能为空,而且必须存在。它们在用户登录(Login注册)
时,被系统自动执行,为用户设置工作环境,若使用得当,可发挥强大作用。
etc目录下的profile文件是每一个用户登录时,操作系统首先执行的文件,然后再将控制
权交给用户主目录下的.profile文件,当系统给出主提示符($PS1)后,用户就可以开始自己的
工作了。以上全过程对用户而言是透明的。
/etc/profile文件的主要功能包括:显示UNIX/Xenix版本信息或者系统专用应用程序的
提示信息,设置掩码(umask),对终端和邮箱(mail box)进行处理,对非root用户禁止使用new
s命令等。
因为/etc/profile文件的作用范围是全体用户,所以非共性的设置应放在用户自己的.p
rofile文件中。下面就详细讲述.profile文件。
.profile是隐含文件,普通的列目录命令(l、ls、lf,ls-l等)显示不出该文件。UNIX/X
enix系统所有隐文件前都有"."符。
显示UNIX/Xenix系统中的隐含文件属性用以下命令:
$l - a
原始的.profile文件是系统管理员使用Sysadmsh命令或mkdev user命令创建用户时,系
统为该用户自动生成的,用户可使用vi编辑该文件为自己所用。.profile文件产生的效用直
至用户退出系统后才消失,而当用户重新登录时,又开始发挥作用。
设置终端类型
用户使用UNIX/Xenix系统时可能会遇到这样一个现象:每次登录后,系统会要求用户敲入
终端类型,然后在用户输入相应信息后,才给出提示符。这是为什么呢?
原来在原始.profile文件中有这样一个语句:
eval ‘test -m ansi:ansi -m:${TERM:ansi}-r -s -Q’
该语句的作用是要求用户敲入所使用终端的类型并进行测试。
如果我们在.profile文件中加入以下命令:
TERM=terminal-name
TERM变量指明终端类型。
如:TERM=vt100,并且注释掉eval语句。这样处理以后,用户再注册时,就无需敲入终端类
型了。
定义PATH变量
该变量类似于DOS系统的PATH变量,其格式如下:
PATH=$PATH:$HOME/bin:/usr/informix/bin:.
说明:

1.该语句未尾的"·"表示当前路径,不可缺少;

2.不同路径间用":"隔开;

3.$PATH是系统中提供的默认变量,其初始值为/bin:/usr/bin;

4.路径的顺序是很重要的,前后次序不宜随便颠倒。比如用户自编了一个与系统命
令同名的可执行文件,并将其放在$HOME下,并且打算使用这个命令而不是系统提供的同
名命令,那么PATH应设置为:
PATH=$HOME/bin:$PATH:/usr/informix/bin:.
因为,若不同路径下有相同的命令或可执行文件,则以第一个路径下的为准。这时,SHEL
L先搜索$HOME/bin路径,发现其下的这个可执行文件,就为用户调用,而不会再运行/bin或者
/usr/bin下的标准同名命令了。
设置提示符
用户可以将PS1(主提示符)、PS2(辅助提示符)改为更受欢迎的形式。通常情况下,以超
级用户登录时,主提示符为"#",其它用户为"$",PS2一般为"<"。修改提示符的方法如下:
格式:PS1="$LOGNAME> "
说明:将主提示符由默认值改为用户注册名。
使用stty命令重设终端配置

1.对数据传输方式进行设置
如:对奇偶校验位、波特率(bps)大小、停止位位数进行重新设置。

2.字符处理
例1:stty nl
系统只接受字符作为换行符。
例2:stty-nl
系统以(RETURN)字符做为换行符。
例3:stty echo
置击键后屏幕回显。
例4:stty-echo
置击键后,屏幕无显示方式。

3.特殊键定义
例1:
stty erase escape #置抹除键(erase)为escape键
重置抹除键键值,缺省值为"#"。
例2:
stty kill delete #置删行符(kill)为delete键
重置删行符,缺省值为"@"。
例3:
stty eof ctrl-D #置文件结束符(eof)为ctr-D键
重置文件结束符。
例4:
stty intr ctrl-C #中断键可中止系统中绝大多数前台进程,是很重要的终端参数
重置终端中断键为ctrl-C键。

4.其它常用stty命令
例1:stty sane ctrl-J
若终端功能发生紊乱,可用该命令来重置终端设置,使之恢复其出厂参数。该命令以"ct
rl-J"作为行结束符,因为在终端参数紊乱的情况下,RETURN键的功能很可能已经失效,而ctr
l-J命令是系统提供的强行回车键,在绝大多数情况下不会失效。
例2:stty -a
该命令可以显示出终端的所有参数。
以上stty命令是UNIX系统提供的,可随时使用,用户可据自己的需要在.profile文件中设
定。
用户自定义SHELL变量
用户自定义SHELL变量是很有用的,使用情况也很广泛。其功能有些类似于C语言的宏定
义(#define)。最常见的情况是将自己常去的而且很深的路径自定义为一个固定变量,放在.
profile文件中。
如:ML=/usr/work/source/firstml/secoudml
这时,若用户在主提示符($PS1)下键入:
$>cd $ML
$>pwd # 显示当前路径
屏幕显示当前路径为:/usr/work/source/firstml/secondml。
需注意的是:无论使用SHELL专用变量还是自定义变量,均需在变量(大写拼写)前加上"$
"符。并且,在定义完所有变量后,需在.profile中使用export语句,它的作用是将变量设置在
SHELL环境中,以在任意路径下使用。
如:export SHELL ML TERM PATH MAIL PS1
使用Shell内部命令
用户可在.profile文件内使用SHELL内部命令和操作系统命令,Shell常用命令见下表。
@@28173000.GIF;表1@@
.profile文件在Client/Server结构中的应用
在Client/Server结构下,Server总是时刻在运行的,不断地接收Cleint发来的请求,处理
完后向Client发回某些信息。我们指定由server用户来启动server守候进程,特别需要注意
的是,该进程的父进程需设为系统起始进程(init进程),脱离所属终端。否则当server用户从
该终端退出后,该进程就变成了无法控制的"僵尸"进程。
因此,在server用户的.profile文件中加上如下设置:
$HOME/bin/server >>/tmp/server.tmp 2> &1
说明:

1."&"符号的作用是使系统将进程作为后台进程处理。

2."2"的作用。
SHELL在执行一个UNIX命令时,自动打开三个文件:stdin(标准输入)、stdout(标准输出
)、stderr(标准错误),文件描述字分别是0、1、2。所以,上面语句中的"2"表示标准错误的
文件描述字。将server进程的错误信息重定向到/tmp/sever.tmp文件中,而不是stdout上,这
样处理后既不会干扰前台工作,而且用户可随时浏览/tmp/server.tmp文件及时发现错误,便
于程序调试,一举两得。对于后台进程,一般都要将其结果重定向到某固定文件中。

3.由于UNIX系统是多用户、多任务、分时处理系统,所以不排除许多用户以server用户
注册,因此其.profile文件会被执行许多次,因之server进程也会被启动许多次,这种情况是
有害的,所以我们作以下修改:
if ps -ef| grep "server" >/dev/null
then echo"server already running……"
else
echo "server is running..."
$HOME/bin/server >> /tmp/server.tmp 2>&1
sleep 5
fi
对所有UNIX/Xenix系统守侯进程都可按上述处理。

免责声明:文章转载自《[zz]Linux中的/etc/profile文件》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇echarts —— tooltip 鼠标悬浮显示提示框属性火狐 about:config下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Linux头文件和库文件添加环境变量与GCC编译器添加INCLUDE与LIB环境变量

  对所有用户有效在/etc/profile增加以下内容。只对当前用户有效在Home目录下的 .bashrc或.bash_profile里增加下面的内容: (注意:等号前面不要加空格,否则可能出现 command not found) #在PATH中找到可执行文件程序的路径。 export PATH =$PATH:$HOME/bin #gcc找到头文件的...

VirtualBox安装RedHat Linux详解

近期因为项目测试,需要安装RedHat Linux进行模拟,有接近10年没有接触RedHat了,遂对安装步骤做以记录,供参考。 虚拟机本次采用小巧的VirtualBox6.1.18.142142,VirtualBox的安装就不再记录,与普通应用软件安装无异。 以下是安装步骤记录: 1、创建虚拟电脑  2、设置内存大小 3、设置虚拟硬盘  4、配置虚拟...

Java-修饰符

Java修饰符 修饰符用来定义类、方法或者变量,通常放在语句的最前端 访问控制修饰符 访问控制符可以保护对类、变量、方法和构造方法的访问 四中不同的访问权限: default,在同一包内可见,不使用任何修饰符 private,在同一类内可见 public,对所有类可见 protected,对同一包内的类和所有子类可见 默认访问修饰符-不使用...

等了整整12年!Linux QQ 终于更新了!

来自:快科技 作者:上方文Q链接:http://news.mydrivers.com/1/681/681039.htm 2019年10月24日,也就是“1024程序员节”的时候,腾讯突然发布了Linux系统版本的QQ,官方也宣称“全新回归”。 这是因为在2008年的时候,腾讯曾经发布过一次Linux QQ,但如同浪花一般随即消失得无影无踪,如今随着Linu...

Linux基础(15)多线程编程

Linux的内核中没有thread的概念,线程是第三方库libpthread实现的, 和vfork(轻量级进程,只有部分copy)有点像(进程的创建fork会完全copy主进程资源 ,而线程会共享资源,子线程创建新资源时其作用域只在当前子线程,而子线程非新新创建的资源会和创建前的主线程共享这些资源) , 线程和进程的创建在内核里都是系统调用copy_proc...

Linux磁盘设备文件(sda,sdb,sdc…)变化问题

在Linux下往往会碰到这样的问题,磁盘的设备文件,比如/dev/sda, sdb, sdc等等在某些情况下会混乱掉,比如sda变成了sdb或者sdc变成了sdb等等,这样无形中会导致磁盘设备管理的混乱,最常见的比如Linux文件系统的启动问题。很多人在遇到这种问题的时候都去找磁盘、阵列厂家,怀疑是他们的问题,其实这种底层的磁盘(单个磁盘或者RAID阵...