2010-05-23 82 views
10

我正在为一些软件写一点安装脚本。它所做的只是解压缩一个目标tar,然后我想永久设置一些环境变量 - 主要是解压缩库的位置并更新$ PATH。我是否需要以编程方式编辑.bashrc文件,例如添加适当的条目,或者有其他方法吗?什么是标准做法?如何以编程方式在Linux中设置永久环境变量?

编辑:该软件包包含许多运行脚本(20+),它们都使用这些命名的环境变量,所以我需要以某种方式设置它们(变量名称已被选择使得碰撞极不可能)

回答

16

LSB兼容(见spec)的做法是在/etc/profile.d/文件夹中创建一个shell脚本。

在您的应用程序命名后(并确保名称是唯一的),请确保名称以.sh(您可能还想为其他shell添加脚本)和export脚本中需要的变量结尾。来自该目录的所有*.sh脚本在用户登录时被读取 - 同时/etc/profilesource d。

请注意,这不是由bash执行;相反,这是各种协议。

+0

好吧,这看起来可能是解决方案。大概安装程序将需要以root身份运行,以便在此处编写可执行脚本。 – 2010-05-23 14:16:19

+0

这个脚本是否也被服务读取?例如apache或tomcat? – Tobia 2014-09-26 14:45:16

3

标准做法是将其安装到路径中和标准库目录中的目录中,因此不需要更新这些变量。

更新.bashrc是有点容易失败,除其他外;如果用户使用不同的文件或外壳怎么办?

+1

+1正确。如果你试图编辑它们的.bashrc,用户会很不高兴。如果你想安装到一个非标准目录 - 或者不认为你的用户有权限 - 让他们指定'--install-dir = mydir'并告诉他们他们需要添加到他们的环境中。 http://golang.org/doc/install.html – msw 2010-05-23 14:04:17

+0

有一个很好的例子,我认为编辑.bashrc会有很多原因。问题是软件包含许多脚本(20+),它们都使用这些命名的环境变量 - 所以我需要以某种方式设置它们。 – 2010-05-23 14:08:28

+2

一种方法是将它们放入调用脚本的包装脚本中。 – WhirlWind 2010-05-23 14:13:25

2

您还可以生成并安装设置这些变量的脚本。然后,您的软件包的用户将获得该脚本或将其内容复制到他们自己的shell init文件中。

+4

或者包装脚本以已知的名称和地点调用var-setting脚本,然后调用初始可执行文件。 – 2010-05-23 14:13:13