无法初始化 systemd 中用户环境生成器的环境变量

无法初始化 systemd 中用户环境生成器的环境变量

我正在使用 Arch linux 和窗口管理器 BSPWM。

我的登录管理器是 Lightdm。

我的系统版本

systemd 246.2-1

我没有使用 .xinitrc 在我的 DM 中启动进程。

所以我有如下所示的 .profile 文件

set -a
source ${HOME}/.config/vconfig/venvironment
set +a
mkdir -p ${XDG_DATA_HOME}/wineprefixes
mkdir -p ${XDG_DATA_HOME}/gnupg
gpg2 --homedir ${XDG_DATA_HOME}/gnupg
mkdir -p ${XDG_CACHE_HOME}/less

在这里你可以看到 ${HOME}/.config/vconfig/venvironment 加载了我的环境变量

${HOME}/.config/vconfig/venvironment

GPG_TTY=$(tty)
PATH="$(/usr/bin/du -L --exclude=.idea --exclude=archive --exclude=__pycache__ $HOME/.local/bin| /usr/bin/cut -f2 | /usr/bin/tr '\n' ':')$PATH"
PATH=$PATH:$HOME/.local/share/npm/bin
# default programs:
DM="$(/usr/bin/sed -n 's|Session=\(.*\)|\1|p' $HOME/.dmrc)"
EDITOR="emsc"
TERMINAL="st"
BROWSER="firefox"
FILE="lf"
STATUSBAR="polybar"
#Other program settings
VCONFIG="$HOME/.config/vconfig/"
VBIN="$HOME/.local/bin/vbin"
SUDO_ASKPASS="$VBIN/dmenupass"
ORGPATH=${HOME}/Org

#XDG CONFIG MOVEMENTS
XDG_CONFIG_HOME="$HOME/.config"
XDG_DATA_HOME="$HOME/.local/share"
XDG_CACHE_HOME="$HOME/.cache"

IPYTHONDIR=${XDG_CONFIG_HOME}/jupyter
JUPYTER_CONFIG_DIR=${XDG_CONFIG_HOME}/jupyter
ANDROID_SDK_HOME=${XDG_CONFIG_HOME}/android
ADB_VENDOR_KEY=${XDG_CONFIG_HOME}/android
ZDOTDIR=${XDG_CONFIG_HOME}/.config/zsh
NPM_CONFIG_USERCONFIG=$XDG_CONFIG_HOME/npm/config
LESSKEY=${XDG_CONFIG_HOME}/less/lesskey
GTK2_RC_FILES=${XDG_CONFIG_HOME}/gtk-2.0/gtkrc
_JAVA_OPTIONS=-Djava.util.prefs.userRoot=${XDG_CONFIG_HOME}/java

WINEPREFIX=${XDG_DATA_HOME}/wineprefixes/default
HISTFILE=${XDG_DATA_HOME}/zsh/history
_Z_DATA=${XDG_DATA_HOME}/z
GOPATH=${XDG_DATA_HOME}/go
GNUPGHOME=${XDG_DATA_HOME}/gnupg


NUGET_PACKAGES=${XDG_CACHE_HOME}/NuGetPackages
PYLINTHOME=${XDG_CACHE_HOME}/pylint
LESSHISTFILE=${XDG_CACHE_HOME}/less/history
CUDA_CACHE_PATH=${XDG_CACHE_HOME}/nv

现在我的问题是我正在尝试启动 systemd 来启动某些特定于用户的 systemd 服务。

我知道 systemd 不会有在启动期间设置的任何环境变量。

当我在互联网上搜索时,我面前有三个选项。如果有其他替代方法,请指正。

  1. 服务文件中的 EnvironmentFile 或 Environment 属性。但是我在这种方法中遇到了变量扩展问题。

  2. 使用 ~/.config/environment.d 将文件 .conf 保存在这里它将被自动处理,但我最终遇到同样的问题。

  3. 使用 systemd “用户环境生成器”为此我需要将 shell 脚本保存在这个位置。/usr/lib/systemd/user-environment-generators/

我的想法是,我将使用以下命令读取我的环境文件并创建一个生成器脚本。

cat ${HOME}/.config/vconfig/venvironment|while read line; do
 echo $line
done 

我甚至尝试过

set -a
source ${HOME}/.config/vconfig/venvironment.
set +a

但是当我输入时我没有得到任何环境变量

systemctl --user show-environment

我尝试重新加载守护进程。并且重启了机器。

  systemctl --user daemon-reload

当我登录并在 bash 中初始化配置文件时,上述 ${HOME}/.config/vconfig/venvironment 可以正常工作。但在用户环境生成器内部,它不起作用。

请让我知道与此相关的任何所需更多详细信息。

基本上我想初始化相同的所有环境变量,该变量存在于 systemd 中的用户环境生成器中的 ${HOME}/.config/vconfig/venvironment

相关内容