Centos添加环境变量(~/.bash_profile、/etc/profile、/etc/profile.d)

环境变量

bash shell用一个叫做环境变量的特性来存储有关shell会话和工作环境的信息。即允许在内存中存储数据,使得在程序或shell中运行的脚本能够访问到它们。

Linux中环境变量分为三种:

  • 全局环境变量:对于shell会话和所有生成的子shell都是可见的
  • 局部环境变量:只对创建它的shell可见,即当前创建的用户可见
  • 用户定义变量:只对当前会话生效
创建全局环境变量

在/etc/profile文件中创建全局环境变量
/etc/profile文件
**当一个用户登录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文件,PATH=$PATH:/usr/local/php/sapi/fpm就是定义了一个全局变量

PATH=$PATH:/usr/local/php/sapi/fpm
PATH=$PATH:/usr/local/openresty/nginx/sbin
PATH=$PATH:/usr/local/php/bin
PATH=$PATH:/usr/local/mysql/bin:/usr/local/mysql/lib
#PATH=$PATH:/usr/local/apache24/bin/
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL

执行source /etc/profile后生效

创建局部环境变量

打开 ~/.bash_profile文件添加PATH:

# User specific environment and startup programs

PATH=$PATH:$HOME/bin
PATH=$PATH:/usr/local/apache24/bin

export PATH
#也可以通过这种方式给环境变量起别名
alias nginx2=/usr/local/nginx/sbin/nginx

执行source ~/.bash_profile后生效

创建用户定义变量
export PATH=$PATH:/usr/local/apache24/bin

/etc/profile文件和/etc/profile.d目录的区别

/etc/profile文件中存放的变量上面已经做过说明。

在/etc/profile.d 目录中存放的是一些应用程序所需的启动脚本,其中包括了颜色、语言、less、vim及which等命令的一些附加设置。
这些脚本文件之所以能够 被自动执行,是因为在/etc/profile 中使用一个for循环语句来调用这些脚本。而这些脚本文件是用来设置一些变量和运行一些初始化过程的。

在/etc/profile.d目录下创建全局变量

在/etc/profile.d目录下创建的变量也是全局变量,方法如下:

vim /etc/profile.d/httpd.sh

APACHE_HOME=/usr/local/apache24
PATH=$APACHE_HOME/bin:$PATH
export APACHE_HOME PATH

重新打开shell后生效

<think>好的,我需要解决用户在CentOS 7系统中配置Hadoop环境变量后,使用hadoop命令时报错的问题。错误信息是“/usr/bin/env: bash: No such file or directory”,而HADOOP_HOME已经设置为~/chadoop/hadoop/hadoop-2.7.3,并且路径存在。让我一步步分析可能的原因和解决方案。 首先,错误提示中的“/usr/bin/env: bash: No such file or directory”通常意味着脚本的shebang行指定的解释器路径有问题。用户提到环境变量配置在.bash_profile中,这可能涉及到环境变量加载的问题,比如是否在正确的shell配置文件中配置,或者是否在配置后重新加载了文件。 接下来,用户设置的HADOOP_HOME路径是~/chadoop/hadoop/hadoop-2.7.3。这里需要注意波浪号(~)在shell脚本中的解析问题。在配置文件中,波浪号可能不会被正确展开,特别是当Hadoop的脚本在非交互式shell中执行时。这种情况下,应该使用绝对路径而不是~,例如/home/username/chadoop/hadoop/hadoop-2.7.3。因此,用户可能需要检查HADOOP_HOME的设置是否正确,是否使用了绝对路径。 另外,检查hadoop命令的启动脚本是否正确。Hadoop的启动脚本通常位于$HADOOP_HOME/bin目录下,用户需要确认该目录是否已经添加到PATH环境变量中。如果PATH没有正确设置,系统可能找不到hadoop命令,或者找到的是其他位置的错误版本。用户应该确保PATH中包含$HADOOP_HOME/bin和$HADOOP_HOME/sbin。 权限问题也是一个可能的因素。用户需要确认Hadoop的安装目录及其子目录和文件的权限是否正确,当前用户是否有执行权限。特别是bin目录下的脚本是否具有可执行权限,可以使用chmod +x命令添加执行权限。 还有可能的是,系统缺少bash解释器,或者bash的路径不正确。虽然CentOS 7默认安装bash,但用户可能误删或bash被安装到了非标准路径。可以通过运行which bash来确认bash的位置,通常是/bin/bash或/usr/bin/bash。然后检查hadoop脚本的shebang行是否指向正确的bash路径。 此外,环境变量配置的位置是否正确。有些情况下,如果用户在.bash_profile中配置了环境变量,但当前使用的是非登录shell,那么.bash_profile不会被加载。这种情况下,可以尝试将配置移到.bashrc文件中,或者手动执行source ~/.bash_profile使配置生效。 最后,如果以上步骤都确认无误,用户还可以尝试直接运行hadoop脚本的绝对路径,例如~/chadoop/hadoop/hadoop-2.7.3/bin/hadoop version,看是否仍然报错。这样可以排除PATH变量的问题,进一步缩小问题范围。 总结可能的解决步骤: 1. 将HADOOP_HOME的路径改为绝对路径。 2. 检查PATH是否包含$HADOOP_HOME/bin和$HADOOP_HOME/sbin。 3. 确认bash的存在和路径。 4. 检查hadoop脚本的shebang行是否正确。 5. 确保脚本有执行权限。 6. 确认环境变量已加载。</think>根据错误提示和配置信息,该问题通常由环境变量配置方式或脚本解释器路径错误引起。以下是分步解决方案: 1. **修正HADOOP_HOME路径格式** - 将波浪号`~`替换为绝对路径(例如`/home/username/...`) ```bash # 原错误配置 HADOOP_HOME=~/chadoop/hadoop/hadoop-2.7.3 # 修正为 HADOOP_HOME=/home/your_username/chadoop/hadoop/hadoop-2.7.3 ``` 2. **检查PATH变量设置** - 确保包含`$HADOOP_HOME/bin`和`$HADOOP_HOME/sbin` ```bash export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin ``` 3. **验证bash解释器路径** - 执行`which bash`确认路径(通常为`/bin/bash`) - 检查`$HADOOP_HOME/bin/hadoop`脚本首行是否为: ```bash #!/bin/bash ``` 4. **应用环境变量配置** ```bash source ~/.bash_profile ``` 5. **检查文件权限** ```bash chmod -R +x $HADOOP_HOME/bin/ ``` 6. **验证配置** ```bash echo $HADOOP_HOME # 应返回绝对路径 hadoop version # 此时应正常显示版本信息 ``` **典型错误场景示例**:某用户将`HADOOP_HOME`配置为`~/hadoop`后,`hadoop`脚本实际指向路径为`/home/user/~hadoop/bin`而非预期位置[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值