(Manjaro)zsh终端和bash共存时的环境变量配置

前言

笔者目前使用的Linux发行版是Manjaro(日常作为主力开发机真的舒服),但是Manjaro默认的zsh配置的环境变量和Linux系统环境变量文件有冲突,现在给出解决方案。

现象

Manjaro中,默认bash是zsh,读取的环境变量文件是 ~/.zshrc,我之前也一直是向这里添加环境变量的,心想再也不会使用bash了。

在某些情况下,某些软件只和bash有很好的交互,而bash读取不到zshrc中的环境变量。

如:vscode中,默认是bash shell,可以通过配置改成zsh,但是其中的debug attach功能却是默认指向terminal,可能出现无法attach或者环境变量有误的问题。

快速解决

使用公共脚本文件用来存储环境变量,bash和zsh都去引用它。

  1. 创建公共脚本

    touch ~/.local_profile

    文件名可以任意取,但是要具有辨识度

  2. 填写环境变量

    vi ~/.local_profile

    如,填入一个go环境变量

    # go
    go_bin="my_env:/home/lemon/software/go/bin"
    export PATH=$PATH:$go_bin
  3. 添加bash引用

    vi ~/.bash_profile

    添加如下语句

    [[ -f ~/.local_profile ]] && . ~/.local_profile

    其中.local_profile是你刚才创建的环境变量存放的文件

  4. 添加zsh引用

    vi ~/.zshrc

    添加如下语句

    # Use local customer env
    if [[ -f ~/.local_profile ]]; then
    source  ~/.local_profile
    fi

        

  1. 生效终端配置

    • zsh:直接开启新的zsh即可

    • bash:在bash下执行source ~/.bash_profile

  2. 验证

  3. 补充环境变量

    以后新增环境变量,只需要添加到 ~/.local_profile,之后执行步骤5即可

总结

使用公共环境变量脚本来解决这个问题,这样也解决了纠结放在哪个配置文件里的烦恼。

目前是我刚解决的,今后可能会有更好的解决方式,再来补充!

点赞
  1. young说道:
    Google Chrome Android 11

    你好 manjaro安装lsb如何安装呢

    1. lemon lemon说道:

      你好,请问你指的是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

lemon进行回复 取消回复

电子邮件地址不会被公开。必填项已用 * 标注