CS-FreeStyle / 10000-How-To-Do-in-CS

1 stars 0 forks source link

profile and profile.d in linux #6

Open liuty10 opened 5 years ago

liuty10 commented 5 years ago

https://www.cnblogs.com/woshimrf/p/shell-environment.html https://blog.csdn.net/u011277123/article/details/72864826 http://blog.51cto.com/13570193/2089861

两个方式来设置环境变量: 1./etc/profile.d 是一个文件夹,在当中设置的变量是对所有的用户生效的 里面主要是一些.sh文件,例如想设置java的环境变量,可以在本目录下新建java.sh,写入: export JAVA_HOME=**** export PATH=$JAVA_HOME/bin:$PATH 2./etc/profile是设置一个全局变量 ps:~/.bashrc 是存一些用户的个人专门的配置信息

在/etc/profile.d 目录中存放的是一些应用程序所需的启动脚本,其中包括了颜色、语言、less、vim及which等命令的一些附加设置。 这些脚本文件之所以能够 被自动执行,是因为在/etc/profile 中使用一个for循环语句来调用这些脚本。而这些脚本文件是用来设置一些变量和运行一些初始化过程的。 if [ -d /etc/profile.d ]; then for i in /etc/profile.d/*.sh; do if [ -r $i ]; then . $i fi done unset i fi 当一个用户登录Linux系统或使用su -命令切换到另一个用户时,也就是Login shell 启动时,首先要确保执行的启动脚本就是 /etc/profile 。 敲黑板:只有Login shell 启动时才会运行 /etc/profile 这个脚本,而Non-login shell 不会调用这个脚本。 一些重要的变量就是在这个脚本文件中设置的,含义如下: PATH: 预设可执行文件或命令的搜索路径。 USER: 用户登录时使用的用户名。 LOGNAME: 其值为$USER。 HOSTNAME: 所使用的主机名。 MAIL: 存放用户电子邮件的邮箱(实际上是一个ASCII码文件)。 HISTSIZE: 历史记录的行数。 INPUTRC: 存放的是针对键盘热键的信息(也是一个ASCII码文件)。 要注意的是在/etc/profile 文件中设置的变量是全局变量

Summary:

  1. 两个文件都是设置环境变量文件的,/etc/profile是永久性的环境变量,是全局变量,/etc/profile.d/设置所有用户生效
  2. /etc/profile.d/比/etc/profile好维护,不想要什么变量直接删除/etc/profile.d/下对应的shell脚本即可,不用像/etc/profile需要改动此文件

Another Example: /etc/profile.d/qcd.sh

qcd () { mkdir -p /.qcd/tmp [ -x /.qcd/tmp/qcd_tmp ] || touch /.qcd/tmp/qcd_tmp chmod 700 /.qcd/tmp QD=/.qcd/tmp/qcd_tmp export QD /usr/local/sbin/qcde "$@" [ ! cat $QD ] || cd "cat $QD" rm -f "$QD" unset QD; }

方法一: 在/etc/profile or /etc/profile.d/xxx.sh文件中添加变量【对所有用户生效(永久的)】 用VI在文件/etc/profile文件中增加变量,该变量将会对Linux下所有用户有效,并且是“永久的”。 方法二:在用户目录下的.bashrc and .profile,改变量仅会对当前用户有效,并且是“永久的”. 方法三:直接运行export命令定义变量【只对当前shell(BASH)有效(临时的)】 在shell的命令行下直接使用[export变量名=变量值]定义变量,该变量只在当前的shell(BASH)或其子shell(BASH)下是有效的,shell关闭了,变量也就失效了,再打开新shell时就没有这个变量,需要使用的话还需要重新定义。例如 export PATH=/usr/local/webserver/php/bin:$PATH

例如我们可以将所有自定义的全局环境变量放在一个.sh结尾的文件中,然后将该文件放到/etc/profile.d/目录下或者将自定义的变量放入/etc/bashrc文件中,这样将对所有的用户都生效。而对于一些针对个人用户的别名等,可以将其写入到~/.bashrc文件中,只对单个用户有效。

本地环境变量 set回车列出当前系统环境变量和用户环境变量. set命令只能设置当前cmd下才有效的环境变量. set hosts=c:/windows/system32/drivers/etc

使用export命令将本地环境变量变为全局环境变量

可以用printenv命令查看全局环境变量,大写表示是系统环境变量,小写表示是普通用户的环境变量

使用unset命令可以删除环境变量,格式为 unset 变量名 不过对于全局环境变量的删除,我们要注意:如果在子shell下删除全局环境变量,删除操作只对子shell有效,如果回到父shell下,该全局变量还能引用.