linux中变量存储位置

本文详细介绍了Linux应用程序的内存布局,包括代码段、数据段、堆、栈等不同区域所存放的数据类型及其特点。帮助读者理解程序运行时的内存使用情况。

Linux应用程序地址布局



全局初始化变量:数据段

全局未初始化变量:数据段(BSS)

全局的、静态的(static)、初始化的变量:数据段

全局的、静态的、未初始化变量:数据段

全局的常量(const):代码段

 

局部初始化的变量:栈

局部未初始化变量:栈

局部的、静态的、初始化变量:数据段

局部的、静态的、未初始化变量:数据段

局部常量:栈

 

通过malloc分配得到的局部指针:堆

(此处数据段是广义上的数据段,包含BSS段)

 


数据存放总结:
1.代码段:代码,全局常量(const)、字符串常量
2.数据段:全局变量(初始化以及未初始化的)、静态
变量(全局的和局部的、初始化的以及未初始化的)
3.堆:动态分配的区域
4.栈:局部变量(初始化以及未初始化的,但不包含静
态变量)、局部只读变量(局部常量const)
 

 

### Linux 系统变量存储位置及配置文件 在 Linux 系统中,系统变量通常存储在多个配置文件中,这些文件根据作用域和用途分为全局配置文件和用户特定配置文件。以下是常见的配置文件及其功能: #### 全局配置文件 1. **`/etc/profile`** 这个文件是所有用户的全局配置文件之一,主要用于设置全局环境变量和初始化脚本。它通常包含一些默认的环境变量定义,如 `PATH` 和 `PS1` 等[^4]。 2. **`/etc/bashrc` 或 `/etc/bash.bashrc`** 该文件用于定义全局的 Bash Shell 配置,包括别名、函数和环境变量等。某些系统可能使用 `/etc/bash_profile` 或 `/etc/profile.d/` 目录中的文件来扩展全局配置[^2]。 3. **`/etc/environment`** 这是一个简单的文件,通常只包含键值对形式的环境变量定义。与 Shell 脚本不同,它不支持复杂的命令或逻辑结构[^3]。 4. **`/etc/profile.d/*.sh`** 在某些 Linux 发行版中,`/etc/profile.d/` 目录下的脚本会被自动加载并执行,允许管理员将不同的配置分散到多个文件中,便于管理和维护[^4]。 #### 用户特定配置文件 1. **`~/.bash_profile` 或 `~/.profile`** 每个用户的主目录下都有一个 `.bash_profile` 文件(或 `.profile`),用于定义该用户的个性化环境变量和启动脚本。当用户登录时,Shell 会读取此文件[^4]。 2. **`~/.bashrc`** 这个文件用于定义交互式 Shell 的配置,通常包含别名、函数和一些快捷命令。虽然它不是登录时直接加载的文件,但可以通过 `.bash_profile` 显式调用[^4]。 3. **`~/.bash_logout`** 当用户退出 Shell 时,系统会执行此文件中的命令,通常用于清理环境或记录日志[^4]。 #### 示例:添加自定义环境变量 以下是如何在全局配置文件中添加一个自定义环境变量的示例: ```bash # 编辑 /etc/profile 文件 sudo nano /etc/profile # 添加以下内容 export MY_VAR="This is a custom variable" # 使更改生效 source /etc/profile ``` 如果需要为某个用户单独设置环境变量,可以编辑其个人配置文件: ```bash # 编辑 ~/.bashrc 文件 nano ~/.bashrc # 添加以下内容 export USER_VAR="User-specific variable" # 使更改生效 source ~/.bashrc ``` ### 注意事项 - 全局配置文件会影响所有用户,因此修改时需谨慎。 - 用户特定配置文件仅影响当前用户,适合个性化设置。 - 环境变量的优先级遵循“就近原则”,即用户配置文件中的变量会覆盖全局配置文件中的同名变量[^3]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值