菜单

Administrator
发布于 2024-10-30 / 9 阅读
0
0

centos7的/etc/profile解析

说明

/etc/profile 是一个系统级的启动文件,它为登录到系统的所有用户设置环境变量和执行脚本,以下是该文件的一些主要功能:

  1. 设置环境变量:/etc/profile 文件通常用来设置全局环境变量,如 PATH、USER、HOSTNAME 等,这些变量对系统中的所有用户都是有效的。

  2. 执行脚本:该文件可能包含一些shell脚本,这些脚本在用户登录时执行,可以用来配置系统的某些方面,或者设置特定的环境。

  3. 配置umask:umask决定了新创建的文件和目录的默认权限。通常在 /etc/profile 中设置umask值。

当执行source /etc/profile时,相当于执行profile这个脚本:

  1. 当前shell会读取 /etc/profile 文件的内容,并执行其中的命令。

  2. 任何由 /etc/profile 设置的环境变量都会在当前shell中生效。

  3. 如果 /etc/profile 中包含脚本或函数定义,它们也会在当前shell中生效。

需要注意的是,source 命令仅在当前shell会话中有效,但是对于/etc/profile这个文件,比较特殊,当打开了新的shell窗口或标签,都会自动执行。

全局执行

如果想要某个程序在全局范围内可执行,即在任何用户的shell会话中都可以直接运行该程序而不需要指定完整的路径,可以通过修改 /etc/profile 文件来将程序的路径添加到全局 PATH 环境变量中。

打开 /etc/profile 文件,然后在文件末尾或适当的位置,添加以下行来扩展 PATH 变量:

export PATH=$PATH:/path/to/your/program_directory

其中/path/to/your/program_directory替换为实际程序的目录。

然后source /etc/profile生效。

需要注意的是,如果你的程序,如jdk,redis等相关的程序java命令,redis-cli命令等,全局执行是依托本方式在/etc/profile文件添加export PATH实现,那么当你想要开机启动某个程序,然后在/etc/rc.local文件中增加启动脚本时,如xxx.sh:

#!/bin/bash
nohup java -jar /home/wvp/wvp-pro-2.7.0-03051114.jar >> /dev/null &

你会发现启动不了,因为环境变量读取不到java这个程序,处理方式为,在/etc/rc.local最前面增加source /etc/profile,在执行环境强制读取环境变量。或者指明具体java程序的路径,如/home/jdk/java。

或者另外一种方式,将执行程序置于/usr/bin/命令下,也可以实现全局执行,并且开启自启动也能读到相关程序。


评论