环境变量区别

本文详细介绍了Linux系统中Shell配置文件的作用及区别,包括系统级的/etc/profile和用户级的~/.bash_profile等文件,阐述了它们之间的继承关系及执行时机。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、/etc/profile: 此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置。

2、/etc/bashrc: 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取。

3、~/.bash_profile: 每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。

4、~/.bashrc: 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。

5、~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件. 另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承 /etc/profile中的变量,他们是"父子"关系。

6、~/.bash_profile 是交互式、login 方式进入 bash 运行的~/.bashrc 是交互式 non-login 方式进入 bash 运行的通常二者设置大致相同,所以通常前者会调用后者。
### Nginx中环境变量区别 在Nginx的配置过程中,环境变量是一种灵活的方式来动态调整其行为。以下是关于Nginx环境中不同类型的变量及其区别: #### 1. **操作系统级别的环境变量** 这些是在启动Nginx之前由操作系统的shell或其他工具设置的全局变量。它们可以通过`env`指令传递给Nginx进程。 - **特点**: - 它们通常用于影响整个系统的行为。 - 可以通过修改`/etc/environment`或`.bashrc`等文件来设定。 - 在Docker容器中,也可以通过`ENV`命令定义并传递给Nginx。 - **使用场景**: - 设置一些敏感信息(如API密钥),避免硬编码到配置文件中[^1]。 - 控制某些外部服务的地址或端口。 - **示例**: ```nginx env MY_API_KEY; ``` --- #### 2. **Nginx内部的变量** Nginx本身提供了一些内置变量,可以在配置文件中直接调用。例如 `$host`, `$uri`, `$args` 等。 - **特点**: - 主要用于HTTP上下文中,处理请求和响应的相关属性。 - 动态生成,基于客户端请求的内容。 - **使用场景**: - 自定义日志格式[^3]。 - 实现复杂的重写逻辑或反向代理规则。 - 缓存键的设计[^5]。 - **示例**: ```nginx log_format custom '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log custom; ``` --- #### 3. **通过 `set` 或 `map` 创建的自定义变量** 开发者可以根据需求创建自己的变量,以便更精细地控制流量分配或实现特定业务逻辑。 - **特点**: - 更加灵活,能够组合多个内置变量形成新的表达式。 - 支持条件判断和映射关系。 - **使用场景**: - 基于用户Agent类型分流流量。 - 构建个性化的缓存策略[^4]。 - **示例**: ```nginx map $http_user_agent $device { default mobile; ~*iPad tablet; } server { location / { proxy_set_header X-Device-Type $device; } } ``` --- #### 4. **FastCGI 参数作为伪环境变量** 当Nginx充当PHP-FPM前端时,会将一部分变量转发至后端应用层,这部分被称为FastCGI参数。 - **特点**: - 类似于标准CGI协议中的环境变量集合。 - 能够携带额外元数据供脚本解析。 - **使用场景**: - 提供给PHP程序有关当前请求的具体细节。 - 修改默认的工作目录或者Session ID命名方式。 - **示例**: ```nginx fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; ``` --- ### 总结对比表 | 类型 | 特点 | 使用场景 | |-------------------|----------------------------------------------------------------------------------------|---------------------------------------------| | 操作系统级 | 全局生效,在Nginx启动前预先设定 | 敏感信息管理、基础架构依赖项 | | 内置 | 自动生成,反映实时请求状态 | 日志定制、URL改写 | | 用户定义 | 手动声明,可结合其他变量构建复杂逻辑 | 流量分类、个性化体验 | | FastCGI参数 | 向下游应用程序传输附加信息 | PHP集成 | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值