如何在Raspbian GNU/Linux 10上永久设置$PATH



我想将samba二进制路径存储到rpi4上的全局$PATH变量,但它没有按预期工作。我在文件夹/etc/profile.sh中创建了一个文件samba-binary-path.sh,并使用chmod +x使其可执行。

文件samba-binary-path.sh包含以下内容:

export PATH=/usr/local/samba/bin/:/usr/local/samba/sbin/:$PATH

此外,我还将export PATH=/usr/local/samba/bin/:/usr/local/samba/sbin/:$PATH保存在文件/etc/environment中。

现在是疯狂的部分。当我在cli上执行脚本时,它按预期工作,但当它从另一个进程启动时,路径变量缺少我的samba二进制路径。

受影响的代码块:

#!/bin/bash
BINDIR=$(samba -b | grep 'BINDIR' | grep -v 'SBINDIR' | awk '{print $NF}')
[[ -z $BINDIR ]] && printf "Cannot find the 'samba' binary, is it installed?"

出于去bug的目的,我通过管道将$PATH变量发送到/var/log/syslog

结果如下:

  • 在cli上执行:$PATH=/usr/local/samba/bin/:/usr/local/samba/sbin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
  • 从其他进程执行:$PATH=/sbin:/bin:/usr/sbin:/usr/bin

我在哪里指定路径,以便总能找到samba二进制文件?

问候,

Ronny

如何在Raspbian GNU/Linux 10 上永久设置$PATH

要为所有没有显式设置PATH的可能环境显式永久更改PATH,就像一个新的非交互式非登录shell没有从父进程继承PATH一样,请使用不同的DEFAULT_PATH_value值重新编译bash(如果我没记错的话,它有一个./configure选项(。

我在哪里指定路径,以便总能找到samba二进制文件?

您可以在脚本中指定它。

PATH=$PATH:/some/path
# or explicitly
bindir=$(/the/path/to/samba -b ....)

您还可以在运行脚本时显式调用登录shell,从而获取/etc/profile*内容。

最新更新