今天写了另外一篇博文,里面写到fcitx5需要设置环境变量才可以让QT等软件正确调用,但是实在是太久前设置的啦,早就忘记是在哪里设置的😂在网上也没找到具有普适意义的方案,看起来只能自己动手丰衣足食啦!

深思熟虑后,想到了一个比较有普适性的解决方案,顺便分享出来做个原创文章。


首先我们要知道我们有那些环境变量,printenv 一下就好啦(去除部分敏感信息),这样子我们就知道具体键值对是怎样的啦

---->printenv
XDG_SESSION_TYPE=wayland
MANAGERPID=901
SDL_IM_MODULE=fcitx5
ICEAUTHORITY=/run/user/1000/iceauth_tzKkhz
XDG_VTNR=1
MOTD_SHOWN=pam
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
XDG_SESSION_DESKTOP=KDE
XMODIFIERS=@im=fcitx5
MEMORY_PRESSURE_WATCH=/sys/fs/cgroup/user.slice/user-1000.slice/user@1000.service/session.slice/plasma-plasmashell.service/memory.pressure
DEBUGINFOD_URLS=https://debuginfod.archlinux.org 
GTK_IM_MODULE=fcitx5
QT_IM_MODULE=fcitx5
CONDA_PROMPT_MODIFIER=false
QT_WAYLAND_RECONNECT=1
XDG_SESSION_CLASS=user
KDE_FULL_SESSION=true
TERM=xterm-256color
COLORTERM=truecolor
XDG_SEAT=seat0
XKB_DEFAULT_OPTIONS=terminate:ctrl_alt_bksp
LANG=zh_CN.UTF-8
SHLVL=1

接着,我就思考了一下:环境变量这种东西,它一般会被写在某些配置文件里,比如 .bashrc.profile 或者是 /etc/profile 这种地方。

于是我就想着,能不能写一个统一的命令,一次性把所有可能设置环境变量的文件都查一遍,看有没有 export 的记录。这样我就不用一个个文件手动打开去翻了。

最后我写了这么一条命令:

grep -R "export VAR_NAME" /etc/* ~/.bashrc ~/.bash_profile ~/.zshrc ~/.profile ~/.bash_aliases 2>/dev/null

VAR_NAME 换成你要查的变量,比如 PATHJAVA_HOME,它就能帮我快速找到是哪一个文件里设置的,非常方便!

当然同理,假如发现这种方式找不到(非bash脚本可能用的不是export)或者重名过多,可以尝试grep环境变量的,这样子大概率可以找到

--->grep -R "fcitx" /etc/* ~/.bashrc ~/.bash_profile ~/.zshrc ~/.profile ~/.bash_aliases 2>/dev/null
/etc/environment:XIM=fcitx5
/etc/environment:XIM_PROGRAM=fcitx5
/etc/environment:GTK_IM_MODULE=fcitx5
/etc/environment:QT_IM_MODULE=fcitx5
/etc/environment:XMODIFIERS=@im=fcitx5
/etc/environment:SDL_IM_MODULE=fcitx5
/etc/environment:GLFW_IM_MODULE=fcitx5
/etc/xdg/autostart/org.fcitx.Fcitx5.desktop:Exec=/usr/bin/fcitx5
/etc/xdg/autostart/org.fcitx.Fcitx5.desktop:Icon=fcitx
/etc/xdg/Xwayland-session.d/20-fcitx-x11:/usr/bin/fcitx5-remote --check -x

几秒钟的功夫就可以找到是在哪里设置的啦,无论是修改还是删除都非常优雅,不需要像屎山一样不断追加修改啦。