前言
笔者目前使用的Linux发行版是Manjaro(日常作为主力开发机真的舒服),但是Manjaro默认的zsh配置的环境变量和Linux系统环境变量文件有冲突,现在给出解决方案。
现象
Manjaro中,默认bash是zsh,读取的环境变量文件是 ~/.zshrc,我之前也一直是向这里添加环境变量的,心想再也不会使用bash了。
在某些情况下,某些软件只和bash有很好的交互,而bash读取不到zshrc中的环境变量。
如:vscode中,默认是bash shell,可以通过配置改成zsh,但是其中的debug attach功能却是默认指向terminal,可能出现无法attach或者环境变量有误的问题。
快速解决
使用公共脚本文件用来存储环境变量,bash和zsh都去引用它。
-
创建公共脚本
touch ~/.local_profile文件名可以任意取,但是要具有辨识度
-
填写环境变量
vi ~/.local_profile如,填入一个go环境变量
# go go_bin="my_env:/home/lemon/software/go/bin" export PATH=$PATH:$go_bin -
添加bash引用
vi ~/.bash_profile添加如下语句
[[ -f ~/.local_profile ]] && . ~/.local_profile其中
.local_profile是你刚才创建的环境变量存放的文件 -
添加zsh引用
vi ~/.zshrc添加如下语句
# Use local customer env if [[ -f ~/.local_profile ]]; then source ~/.local_profile fi
-
生效终端配置
-
zsh:直接开启新的zsh即可
-
bash:在bash下执行
source ~/.bash_profile
-
-
验证
-
补充环境变量
以后新增环境变量,只需要添加到
~/.local_profile,之后执行步骤5即可
总结
使用公共环境变量脚本来解决这个问题,这样也解决了纠结放在哪个配置文件里的烦恼。
目前是我刚解决的,今后可能会有更好的解决方式,再来补充!
你好 manjaro安装lsb如何安装呢
你好,请问你指的是lsb-release吗?可以参考这里https://software.manjaro.org/package/lsb-release#!
我Manjaro上已经有了lsb-release,我运行的结果是这样:
sb_release -a ✔
LSB Version: n/a
Distributor ID: ManjaroLinux
Description: Manjaro Linux
Release: 21.2.0
Codename: Qonos