linux下修改环境变量问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux下修改环境变量问题相关的知识,希望对你有一定的参考价值。

linux纯新手,能不能教教我怎么修改环境变量,最好能把命令打上来

按变量的生存周期来划分,Linux变量可分为两类,它们的修改方法如下:
(1)永久的:需要修改配置文件,变量永久生效。
常见的配置文件包括:
(1-1)/etc/profile:对所有用户生效;此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行;并从/etc/profile.d目录的配置文件中搜集shell的设置
例如:编辑/etc/profile文件,添加CLASSPATH变量
# vi /etc/profile
添加一行:
export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib
修改后需要执行重新登录才能生效,也可以执行命令source /etc/profile来生效

(1-2)/etc/bashrc:对所有用户生效;为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取
编辑方法如上,不再赘述

(1-3)~/.bash_profile:仅会对当前用户有效;每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次
例如:编辑guok用户目录(/home/guok)下的.bash_profile
$ vi /home/guok/.bash.profile
添加如下内容:
export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib
修改后需要执行重新登录才能生效,也可以执行命令source /etc/profile来生效

(1-4)~/.bashrc:仅会对当前用户有效;该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取
编辑方法如上,不再赘述

另外,~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是"父子"关系

综述,对上述文件修改,添加你需要的变量,在启动一个shell(终端,terminal)时,你所定义的变量均会生效的。

(2)临时的:使用export命令声明即可,变量只在当前的shell(BASH)或其子shell(BASH)下是有效的,在关闭shell后失效,再打开新shell时就没有这个变量,需要使用的话还需要重新定义
在shell的命令行下直接使用[export 变量名=变量值] 定义变量

环境变量的查看
(1)使用echo命令查看单个环境变量。例如:
echo $PATH
(2)使用env查看所有环境变量。例如:
env
(3)使用set查看所有本地定义的环境变量。例如:
set
另外,unset可以删除指定的环境变量。

常用的环境变量
PATH 决定了shell将到哪些目录中寻找命令或程序
HOME 当前用户主目录
HISTSIZE 历史记录数
LOGNAME 当前用户的登录名
HOSTNAME 指主机的名称
SHELL 当前用户Shell类型
LANGUGE  语言相关的环境变量,多语言可以修改此环境变量
MAIL 当前用户的邮件存放目录
PS1 基本提示符,对于root用户是#,对于普通用户是$追问

怎么编辑/etc/profile这个文件啊,需要用到什么命令么

追答

用编辑器编辑即可。看你使用什么比较顺手吧。
可以用vi,emacs,gedit等等都可以。

如果你会用vi的话,
打开一个终端,
输入命令vi /etc/profile
即可开始编辑这个文件:按 i 进入编辑模式;按 冒号 :,然后输入wq,回车,即可保存。

如果你对vi不熟悉,推荐用gedit,跟windows中的记事本操作方式差不多。(不过一定要用root账户来打开/etc/profile)

参考技术A vi .profile
直接打开环境变量的文件,然后添加你需要的宏,编辑保存退出重新登录就生效了。追问

能说的详细点么,比如说我需要调到什么目录,vi.profile后面要跟什么

参考技术B 最简洁也是最通用的:ENVVAR=xxxxx; export ENVAR
例如: PATH=$PATH:/usr/local/bin; export PATH
参考技术C export

linux下修改环境变量后一重启又复位了。

linux下修改环境变量后一重启又恢复原状了。例如:
export PATH=/.../java/linux/jdk1.5/bin:$PATH
export CLASSPATH=/.../java/linux/jdk1.5/lib/jre/javaws/:$CLASSPATH、
重启后,
echo $PATH

echo $CLASSPATH
不含新添加的路经

linux下修改环境变量后一重启又复位了,是设置错误造成的,解决方法如下:

1、首先可以查看系统已添加的环境变量,使用命令:echo $PATH

2、也可以使用命令:env 查看系统所有环境变量。

3、然后切换root账户:su root,修改/etc/profile文件权限:chmod 777 /etc/profile。

4、使用su切换回要添加环境变量的用户,修改环境变量:vim /etc/profile。

5、在文档最后添加地址:export PATH="/home/wcy/softwares/packmol:$PATH",保存后退出即可。

参考技术A 晕。。。你在shell里面改,只是做了临时更改啊,一重启肯定没了啊,你要把配置写入配置文件啊。vi ~/.bashrc 在其中加入:
PATH= "/home/jdk1.5/bin:$PATH "
CLASSPATH=".:/home/jdk1.5/jre/javaws"
export PATH
export CLASSPATH

然后新开一个shell,肯定就没问题了。本回答被提问者采纳
参考技术B 执行export命令修改环境变量仅仅能够针对你这次登陆的session。当年logout以后,修改的环境变量就会又返回到以前。如果想永久修改,请直接去改/etc/profile文件。

可以在最后一行添加以下内容:PATH=/.../java/linux/jdk1.5/bin:$PATH
export PATH
CLASSPATH=/.../java/linux/jdk1.5/lib/jre/javaws/:$CLASSPATH
export CLASSPATH
参考技术C 在/etc/profile文件中添加变量【对所有用户生效(永久的)】

用VI在文件/etc/profile文件中增加变量,该变量将会对Linux下所有用户有效,并且是“永久的”。

例如:编辑/etc/profile文件,添加CLASSPATH变量

# vi /etc/profile

export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib

注:修改文件后要想马上生效还要运行# source /etc/profile不然只能在下次重进此用户时生效
参考技术D daidai141 正解
/etc/profile 对应 sh
~/.bashrc 对应 bash
bash 先找 ~/.bashrc ,如果没有才去找/etc/profile ,算是保持对sh的一致

以上是关于linux下修改环境变量问题的主要内容,如果未能解决你的问题,请参考以下文章

Linux下如何使环境变量文件生效

Linux_环境变量(添加删除修改)_(命令获取)

Linux下修改环境变量

Linux下如何使环境变量文件生效?

linux下配置自己的环境变量文件my_env.sh

linux修改了JAVA_HOME环境变量不生效?