如何指定root的环境变量?

4 root bashrc sudo environment-variables

我做 Rails 开发。在这个应用程序中,我需要指定环境变量LD_LIBRARY_PATH = /usr/local/oracle/lib,但是当我使用 sudo 脚本/服务器运行应用程序时,它不会运行,因为该库路径不在 root 的 env 中。

我该怎么做才能让它发挥作用?我试图将路径放在根目录下./bashrc,但没有用。

小智 6

我有一个类似的问题。我查看了我的/etc/sudoers文件,看到了以下几行:

默认值 env_reset
默认值 env_keep = "颜色显示主机名 HISTSIZE INPUTRC KDEDIR \
                        LS_COLORS 邮件 PS1 PS2 QTDIR 用户名 \
                        LANG LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION \
                        LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC \
                        LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS \
                        _XKB_CHARSET XAUTHORITY”

为了让我的环境变量在那里,我必须在“XAUTHORITY”之后添加它的名字。在您的情况下,您将拥有:

默认值 env_keep = "颜色显示主机名 HISTSIZE INPUTRC KDEDIR \
                        LS_COLORS 邮件 PS1 PS2 QTDIR 用户名 \
                        LANG LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION \
                        LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC \
                        LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS \
                        _XKB_CHARSET XAUTHORITY LD_LIBRARY_PATH"

试一试吧。

还要确保您BASH_ENV="~/.bashrc"/etc/environment.

有关更多详细信息,请参阅此其他答案


Ins*_*yte 0

有多种方法可以将其添加到脚本中,但我建议更简单、更可靠的方法是将路径直接添加到动态链接器的配置中:

$ sudo 编辑器 /etc/ld.so.conf.d/railslibs

将您在问题中提到的路径添加到该文件并运行sudo ldconfig

这应该使得环境修改变得不必要。