【问题标题】:How to permanently set $PATH on Raspbian GNU/Linux 10 [closed]如何在 Raspbian GNU/Linux 10 上永久设置 $PATH [关闭]
【发布时间】:2021-08-18 05:17:07
【问题描述】:

我想将我的 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?"

出于调试目的,我将$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 二进制文件?

问候,

罗尼

【问题讨论】:

  • I have export PATH .. in the file /etc/environment 这不是environment 文件的格式。
  • when it get started from another process 什么“另一个进程”? Executed from other process:什么“其他进程”?哪个流程?
  • 是的,你是对的。我再次将其从 /etc/environment 中删除
  • 奥托,samba -b | awk '/^BINDIR$/{print $NF}' 也许
  • 关于以下脚本Link。当分配或删除 IP 地址租约时,它由 DHCP 服务器“isc-dhcp-server”执行。 dhcpd.conf link

标签: bash path raspberry-pi


【解决方案1】:

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

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

我在哪里指定路径以便始终可以找到 samba 二进制文件?

您在脚本中指定它。

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

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

【讨论】:

  • 感谢您的回复,我认为可能有一个系统范围的变量可以输入。我已经知道我可以在脚本中指定路径。然后我会继续这样做。 :-)
猜你喜欢
  • 2013-01-16
  • 2014-10-05
  • 2012-07-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多