您尚未登录。

#1 2021-04-15 14:21:52

thepoy
会员
注册时间: 2021-02-04
帖子: 15

在 $HOME/.pam_environment 中无法使用 $HOME

因为需要设置 PATH,所以在 $HOME/.pam_environment 中添加了环境变量:

PATH           DEFAULT="${HOME}/.local/bin"

注销后,环境变量中的确增加了一条,但增加的是"/.local/bin","${HOME}"被忽略了或者被识别为 "/" 了。
我该怎么解决这个问题呢?

我使用的是 KDE+wayland。

离线

#2 2021-04-15 15:02:18

李皓奇
会员
注册时间: 2019-05-30
帖子: 7

Re: 在 $HOME/.pam_environment 中无法使用 $HOME

换成 @{HOME} 试试,这个一般来讲是从 /etc/passwd 里面读取的,不是读环境变量。

另外一点,整个用户级的 pam_env 配置都已经被上游弃用,建议开始计划迁移。

离线

#3 2021-04-15 15:06:14

oogeek
会员
注册时间: 2021-03-21
帖子: 6

Re: 在 $HOME/.pam_environment 中无法使用 $HOME

也可以直接在.bashrc 等地方export
比如,使用startx 来启动 (X),bash tty登陆,就在.bashrc export.

最近编辑记录 oogeek (2021-04-15 15:06:35)


I USE GENTOO BTW

离线

#4 2021-04-15 15:17:38

thepoy
会员
注册时间: 2021-02-04
帖子: 15

Re: 在 $HOME/.pam_environment 中无法使用 $HOME

李皓奇 说:

换成 @{HOME} 试试,这个一般来讲是从 /etc/passwd 里面读取的,不是读环境变量。

另外一点,整个用户级的 pam_env 配置都已经被上游弃用,建议开始计划迁移。

pam_env以外的其他配置文件不能生效,最后才只能选择用pam_env。尝试过 xprofile profile xinitrc xsession .config/environment.d,这些用户级配置文件没有一个能生效。
之后用 /etc/profile 解决。最后尝试了一下 pam_env 才找到用户级能有用的环境变量文件。
在 wiki 中看见,wayland 只能用系统级的环境变量,但 wiki 中没有写 ~/.config/systemd/user.conf 该如何配置,所以只能选择使用 pam_env 了。

离线

#5 2021-04-15 16:48:46

matrikslee
会员
注册时间: 2017-04-21
帖子: 450
个人网站

Re: 在 $HOME/.pam_environment 中无法使用 $HOME

thepoy 说:

但 wiki 中没有写 ~/.config/systemd/user.conf 该如何配置,所以只能选择使用 pam_env 了。

https://wiki.archlinux.org/index.php/Sy … 8%E9%87%8F

对于有 $HOME 目录的用户,可以在 ~/.config/systemd/user.conf 文件中使用 DefaultEnvironment 选项,

提示: 如果想一次设置多个环境变量,可以写一个配置文件,文件里面每一行定义一个环境变量,用 "key=value" 的键值对表示,然后在你的启动脚本里添加xargs systemctl --user set-environment < /path/to/file.conf。

离线

#6 2021-04-15 17:04:56

thepoy
会员
注册时间: 2021-02-04
帖子: 15

Re: 在 $HOME/.pam_environment 中无法使用 $HOME

matrikslee 说:

https://wiki.archlinux.org/index.php/Sy … 8%E9%87%8F

对于有 $HOME 目录的用户,可以在 ~/.config/systemd/user.conf 文件中使用 DefaultEnvironment 选项,

提示: 如果想一次设置多个环境变量,可以写一个配置文件,文件里面每一行定义一个环境变量,用 "key=value" 的键值对表示,然后在你的启动脚本里添加xargs systemctl --user set-environment < /path/to/file.conf。

就是没明白 DefaultEnvironment 的值应该怎么设置。。。

离线

#7 2021-04-15 17:19:02

matrikslee
会员
注册时间: 2017-04-21
帖子: 450
个人网站

Re: 在 $HOME/.pam_environment 中无法使用 $HOME

thepoy 说:

就是没明白 DefaultEnvironment 的值应该怎么设置。。。

https://www.freedesktop.org/software/sy … ml#Options

All options are configured in the [Manager] section:

DefaultEnvironment直接有一个example小节
https://www.freedesktop.org/software/sy … vironment=

大概就是这样的
$ cat /etc/systemd/user.conf
[Manager]
DefaultEnvironment = "VAR1=word1 word2" VAR2=word3 "VAR3=word 5 6"

离线

#8 2021-04-16 20:54:28

thepoy
会员
注册时间: 2021-02-04
帖子: 15

Re: 在 $HOME/.pam_environment 中无法使用 $HOME

matrikslee 说:

https://www.freedesktop.org/software/sy … ml#Options

All options are configured in the [Manager] section:

DefaultEnvironment直接有一个example小节
https://www.freedesktop.org/software/sy … vironment=

大概就是这样的
$ cat /etc/systemd/user.conf
[Manager]
DefaultEnvironment = "VAR1=word1 word2" VAR2=word3 "VAR3=word 5 6"

已经试过了,仍然没有用。
wayland 的相关文档缺失严重啊

➜  ~ cat .config/systemd/user.conf
[Manager]
DefaultEnvironment=PATH=/home/thepoy/.local/bin

➜  ~ env | grep PATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/usr/local/go/bin

离线

#9 2021-04-16 21:53:13

matrikslee
会员
注册时间: 2017-04-21
帖子: 450
个人网站

Re: 在 $HOME/.pam_environment 中无法使用 $HOME

thepoy 说:

已经试过了,仍然没有用。
wayland 的相关文档缺失严重啊

我对比中英文的wiki发现对不上,我编辑了一下中文wiki,同步了翻译,现在可以看到新的设置方法了,也增加了使用conf文件配置环境变量的例子。

我有测试在一个普通shell会话下输入systemctl --user set-environment TEST_PATH=$HOME/.local/bin(根据wiki的说法,好像用import-environment也可以)
然后我关掉当前shell会话,重新打开一个终端,执行systemctl --user show-environment | grep TEST_PATH发现设置是成功了的。

但是如果不重启桌面环境,直接用env指令寻找设置的环境变量是看不到效果的。

我测试过了,
1. ~/.config/systemd/user.conf文件有效,用的是
[Manager]
DefaultEnvironment="MYPATH=~/.local/bin"
不过~不会被展开成/home/username,就是MYPATH=~/.local/bin

2. ~/.config/environment/xxx.conf文件有效,用的是
[Service]
TEST_PATH=$HOME/.local/bin
其中$HOME会被展开成/home/username

3. /etc/systemd/user.conf没有生效,不清楚原因
用的是
[Manager]
DefaultEnvironment="DEFAULT_TEST_ENV=xxxx"

生效的case 1和case 2重启桌面环境之后都可以在env的打印中看到,
如果不重启,则只有新打开的会话可以生效

最近编辑记录 matrikslee (2021-04-16 22:06:00)

离线

#10 2021-04-17 09:06:32

thepoy
会员
注册时间: 2021-02-04
帖子: 15

Re: 在 $HOME/.pam_environment 中无法使用 $HOME

matrikslee 说:
thepoy 说:

已经试过了,仍然没有用。
wayland 的相关文档缺失严重啊

我对比中英文的wiki发现对不上,我编辑了一下中文wiki,同步了翻译,现在可以看到新的设置方法了,也增加了使用conf文件配置环境变量的例子。

我有测试在一个普通shell会话下输入systemctl --user set-environment TEST_PATH=$HOME/.local/bin(根据wiki的说法,好像用import-environment也可以)
然后我关掉当前shell会话,重新打开一个终端,执行systemctl --user show-environment | grep TEST_PATH发现设置是成功了的。

但是如果不重启桌面环境,直接用env指令寻找设置的环境变量是看不到效果的。

我测试过了,
1. ~/.config/systemd/user.conf文件有效,用的是
[Manager]
DefaultEnvironment="MYPATH=~/.local/bin"
不过~不会被展开成/home/username,就是MYPATH=~/.local/bin

2. ~/.config/environment/xxx.conf文件有效,用的是
[Service]
TEST_PATH=$HOME/.local/bin
其中$HOME会被展开成/home/username

3. /etc/systemd/user.conf没有生效,不清楚原因
用的是
[Manager]
DefaultEnvironment="DEFAULT_TEST_ENV=xxxx"

生效的case 1和case 2重启桌面环境之后都可以在env的打印中看到,
如果不重启,则只有新打开的会话可以生效

不知道你用的是不是 wayland,就我的情况来看,~/.config/systemd/user.conf 中的配置是不生效的,每次配置完环境变量我都会重启后再查看环境变量。
我能找到的方案只有 pam_env、/etc/profile 和 kde env 能正常设置环境变量。

离线

#11 2021-04-17 09:36:12

matrikslee
会员
注册时间: 2017-04-21
帖子: 450
个人网站

Re: 在 $HOME/.pam_environment 中无法使用 $HOME

thepoy 说:

不知道你用的是不是 wayland,就我的情况来看,~/.config/systemd/user.conf 中的配置是不生效的,每次配置完环境变量我都会重启后再查看环境变量。
我能找到的方案只有 pam_env、/etc/profile 和 kde env 能正常设置环境变量。

我用的gnome wayland,目前是gnome40受害者xD

离线

#12 2021-04-18 01:35:11

荒野无灯
荒野无灯
注册时间: 2012-12-02
帖子: 36
个人网站

Re: 在 $HOME/.pam_environment 中无法使用 $HOME

`pam_env` is being deprecated

arch wiki 有说明: https://wiki.archlinux.org/index.php/En … s#Per_user

Reading ~/.pam_environment is deprecated and the feature will be removed at some point in the future.

建议不要再使用了

refs:

https://github.com/systemd/systemd/issues/7641

https://www.reddit.com/r/archlinux/comments/l0ascx/pam_env_is_being_deprecated_any_alternatives/

https://github.com/linux-pam/linux-pam/commit/ecd526743a27157c5210b0ce9867c43a2fa27784

离线

#13 2021-04-18 07:52:33

thepoy
会员
注册时间: 2021-02-04
帖子: 15

Re: 在 $HOME/.pam_environment 中无法使用 $HOME

matrikslee 说:
thepoy 说:

不知道你用的是不是 wayland,就我的情况来看,~/.config/systemd/user.conf 中的配置是不生效的,每次配置完环境变量我都会重启后再查看环境变量。
我能找到的方案只有 pam_env、/etc/profile 和 kde env 能正常设置环境变量。

我用的gnome wayland,目前是gnome40受害者xD

我之前用的是 KDE wayland,现在换回 X11 了,一切问题都解决了。
相比于 gnome,觉得 KDE 更好用一些,甚至我都觉得 Cinnamon 都比 gnome 好用。

离线

#14 2021-04-18 12:21:36

matrikslee
会员
注册时间: 2017-04-21
帖子: 450
个人网站

Re: 在 $HOME/.pam_environment 中无法使用 $HOME

thepoy 说:

我之前用的是 KDE wayland,现在换回 X11 了,一切问题都解决了。
相比于 gnome,觉得 KDE 更好用一些,甚至我都觉得 Cinnamon 都比 gnome 好用。

我之前用过kde,体验不是特别好,遇到一些无法接受的问题,就换成gnome了(啊,有点偏离这个帖子主题了哈哈)

离线

#15 2021-04-18 20:06:39

thepoy
会员
注册时间: 2021-02-04
帖子: 15

Re: 在 $HOME/.pam_environment 中无法使用 $HOME

matrikslee 说:
thepoy 说:

我之前用的是 KDE wayland,现在换回 X11 了,一切问题都解决了。
相比于 gnome,觉得 KDE 更好用一些,甚至我都觉得 Cinnamon 都比 gnome 好用。

我之前用过kde,体验不是特别好,遇到一些无法接受的问题,就换成gnome了(啊,有点偏离这个帖子主题了哈哈)

贴子已经终结了,没有找到解决方案,那就解决问题本身,所以现在问题没了。
KDE 的 wayland 支持没有 gnome 好。

离线

页脚