避免和conda环境变量冲突---linux下环境变量的设置方法

避免和conda环境变量冲突---linux下环境变量的设置方法,第1张

最近用conda创建了一个新的环境,conda activate进入新环境后,查看perl和python时还是发现:

这就说明conda新环境的环境变量并没有起到作用,于是进入课题组~/.bashrc下看了看,发现有个很奇怪的PATH设定:

好吧,这其实就相当于直接定义了PATH,难怪使用不了conda环境里的变量,于是注销掉这一行,就OK了。

还是记录一下linux下环境变量的设置方法。

1  在当前终端设置临时变量(退出后再进入就没有了)

2   设置当前用户环境变量

即更改用户目录下的 .bash_profile 或 .bashrc 文件,在其末行加入:

保存后执行 source ~/.bashrc (or .profile) 让环境变量立即生效。

3   设置环境变量,对所有用户适用

打开profile或者environment文件:

添加新路径到PATH,则在其末尾行加上:

保存后执行 source /etc/profile (or environment) 让环境变量生效。

Linux的变量种类 按变量的生存周期来划分,Linux变量可分为两类: 1 永久的:需要修改配置文件,变量永久生效。 2 临时的:使用export命令声明即可,变量在关闭shell时失效。 设置变量的三种方法 1 在/etc/profile文件中添加变量【对所有用户生效(永久的)】 用VI在文件/etc/profile文件中增加变量,该变量将会对Linux下所有用户有效,并且是“永久的”。 例如:编辑/etc/profile文件,添加CLASSPATH变量 export CLASSPATH=./JAVA_HOME/lib$JAVA_HOME/jre/lib 注:修改文件后要想马上生效还要运行# source /etc/profile不然只能在下次重进此用户时生效。 2 在用户目录下的.bash_profile文件中增加变量【对单一用户生效(永久的)】 用VI在用户目录下的.bash_profile文件中增加变量,改变量仅会对当前用户有效,并且是“永久的”。 例如:编辑guok用户目录(/home/guok)下的.bash_profile 命令用法如下 $ cd (进入用户登陆目录) $ls –al .bash_profile(.bash_profile为隐藏文件,因此要用ls –a命令查找) $vi .bash_profile(用vi编辑.bash_profile) vi/home/guok/.bash.profile添加如下内容:exportCLASSPATH=./JAVAHOME/libJAVA_HOME/jre/lib 注:修改文件后要想马上生效还要运行$ source /home/guok/.bash_profile不然只能在下次重进此用户时生效。 3 直接运行export命令定义变量【只对当前shell(BASH)有效(临时的)】 在shell的命令行下直接使用[export 变量名=变量值] 定义变量, 该变量只在当前的shell(BASH)或其子shell(BASH)下是有效的, shell关闭了,变量也就失效了,再打开新shell时就没有这个变量,需要使用的话还需要重新定义。 环境变量的查看 1 使用echo命令查看单个环境变量。例如: echo $PATH 2 使用env查看所有环境变量。例如: env 3 使用set查看所有本地定义的环境变量。 使用unset删除指定的环境变量 set可以设置某个环境变量的值。清除环境变量的值用unset命令。如果未指定值,则该变量值将被设为NULL。示例如下: export TEST="Test..." #增加一个环境变量TEST env|grep TEST #此命令有输入,证明环境变量TEST已经存在了 TEST=Test... unset TEST #删除环境变量TEST $ env|grep TEST #此命令没有输出,证明环境变量TEST已经删除 常用的环境变量 PATH 决定了shell将到哪些目录中寻找命令或程序 HOME 当前用户主目录 HISTSIZE 历史记录数 LOGNAME 当前用户的登录名 HOSTNAME 指主机的名称 SHELL 当前用户Shell类型 LANGUGE  语言相关的环境变量,多语言可以修改此环境变量 MAIL 当前用户的邮件存放目录 PS1 基本提示符,对于root用户是#,对于普通用户是$Linux下设置和查看环境变量 https://www.cnblogs.com/qiuhong10/p/7815943.htmlLinux下修改.bash_profile 文件改变PATH变量的值https://blog.csdn.net/u011323949/article/details/79045788

我们经常在shell中输入一个命令然后就开始执行,但是shell是如何从 电脑里面找到这条指令的呢?

shell是通过 环境变量PATH 来进行 搜索 的,同样的在win里面也有这个PATH环境变量,这个PATH保存了shell中执行的命令的搜索路径

通常会得到:

我们可以看到,基本都是bin或者sbin路径,这种路径下都是二进制可执行文件。

系统会按照path中设定的路径按照顺序依次到目录中去查找,如果存在同名的命令,则执行先找到的那个。

如果我们有一个自定义的路径 /home/user/mybin 我们想把这个路径添加到PATH以便于直接在shell中执行这个命令,添加方式:

但是到这里还有一个问题:我们添加的这个路径只在当前shell下有效。

如何是添加的环境变量全局有效?

在每个用户的home目录中有一个shell每次启动时会默认执行一个配置脚本,以初始化环境,包括添加一些用户自定义环境变量等等。

这个配置文件是 .zshrc 相应的bash配置文件为 .bashrc

我们只需要修改.zshrc就可以了

上述命令中 >> 表示将输出以追加的方式重新定向到一个文件中

前面提到的 > 是以覆盖的方式重定向

让环境变量立刻生效:


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8548449.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-17
下一篇2023-04-17

发表评论

登录后才能评论

评论列表(0条)

    保存