相关疑难解决方法(0)

使用“sudo”运行时的环境变量

作为我的问题的例子,我的~/.bashrc文件包含以下几行:

export LD_LIBRARY_PATH=/opt/intel/mkl/lib/ia32:$LD_LIBRARY_PATH
export LD_PRELOAD=/opt/intel/mkl/lib/ia32/libmkl_core.so
Run Code Online (Sandbox Code Playgroud)

这样 Numpy (Python) 就可以找到它需要运行的库,因为它是使用 MKL 和英特尔编译器构建的。这个工作流程不是最好的,但这是另一回事。

我的问题是~/.bashrc当我使用“sudo”(但不是 root)运行程序时,如何传递任意变量(如 中的变量)?

目前,如果我运行:

sudo python -c "import numpy"
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

ImportError: libimf.so: cannot open shared object file: No such file or directory*
Run Code Online (Sandbox Code Playgroud)

一些建议作为sudo -isudo -E不会改变这里的任何内容。


编辑:

我无法回答我的问题(分数不够:D)但我会在这里发表评论,希望还有其他 Linux 新手对sudo陷阱感到疑惑。

[只是暂时的!] 这对我有用(~/.bashrc):

alias sudo='sudo env PATH=$PATH VAR1=SOME_VALUE VAR2=SOME_VALUE...'
Run Code Online (Sandbox Code Playgroud)

command-line sudo environment-variables

61
推荐指数
4
解决办法
13万
查看次数

设置 PATH 使其适用于所有用户,包括 root/sudo

如何为服务器上的所有用户设置 PATH 变量中的说明努力为所有“普通”用户设置 PATH。但是,如果我这样做sudo -s,则printenv PATH不会显示更新的路径。我已经查看了例如Setting TeX Live path for root,但这对我来说似乎没有意义,也许因为我来自 Windows 背景。有没有办法设置真正的系统范围的路径,以便系统上运行的每个进程绝对继承条目?

sudo environment-variables

47
推荐指数
1
解决办法
12万
查看次数

我可以通过 CLI 使 `sudo` 跟随我的路径吗?

您可以编辑sudoers文件并设置secure_path以匹配您的路径。这在Unix & Linux 中有记录

是否有我可以传递的命令行开关sudo,以便它使用我设置的路径?例如:

rick@alien:~$ sudo echo $PATH
/home/rick/bin:/home/rick/.local/bin:/mnt/e/bin:/mnt/e/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
???????????????????????????????????????????????????????????????????????????????
rick@alien:~$ echo $PATH
/home/rick/bin:/home/rick/.local/bin:/mnt/e/bin:/mnt/e/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
???????????????????????????????????????????????????????????????????????????????
rick@alien:~$ sudo which auto-brightness-config
/usr/local/bin/auto-brightness-config
???????????????????????????????????????????????????????????????????????????????
rick@alien:~$ which auto-brightness-config
/mnt/e/usr/local/bin/auto-brightness-config
???????????????????????????????????????????????????????????????????????????????
rick@alien:~$ sudo locate auto-brightness-config
/Desktop/Link to auto-brightness-config
/home/rick/Pictures/display-auto-brightness-config 1.png
/mnt/e/Desktop/Link to auto-brightness-config
/mnt/e/usr/local/bin/.auto-brightness-config
/mnt/e/usr/local/bin/Link to auto-brightness-config
/mnt/e/usr/local/bin/auto-brightness-config
/usr/local/bin/.auto-brightness-config
/usr/local/bin/Link to auto-brightness-config
/usr/local/bin/auto-brightness-config
Run Code Online (Sandbox Code Playgroud)

当我使用sudo它运行/usr/local/bin时,当我真正想要/mnt/e/usr/local/bin.

如果我不想维护sudoers文件中的路径,是否可以传递一个开关sudo以使用我的路径来查找正确的命令?

command-line sudo paths

4
推荐指数
1
解决办法
711
查看次数

标签 统计

sudo ×3

command-line ×2

environment-variables ×2

paths ×1