我正在编写一个程序包,该程序需要设置环境变量才能正确执行。软件包管理器的安装步骤是应该修改用户的环境,还是只是提示用户自己进行修改?我的直觉是后者,但我可以看到前者的论点。
bash
怎么办?有许多可供选择的外壳,其中包含各种启动文件。我认真建议在这里找到一些替代解决方案。
tomcat
它需要几个环境变量才能正常运行;请参见。它们都由运行的启动脚本设置,而不是直接运行其二进制文件。
我正在编写一个程序包,该程序需要设置环境变量才能正确执行。软件包管理器的安装步骤是应该修改用户的环境,还是只是提示用户自己进行修改?我的直觉是后者,但我可以看到前者的论点。
bash
怎么办?有许多可供选择的外壳,其中包含各种启动文件。我认真建议在这里找到一些替代解决方案。
tomcat
它需要几个环境变量才能正常运行;请参见。它们都由运行的启动脚本设置,而不是直接运行其二进制文件。
Answers:
软件包管理器的安装步骤是应该修改用户的环境,还是只是提示用户自己进行修改?
都不行 软件包安装程序切勿触摸该软件包不拥有的帐户的主目录中的任何内容。软件包还应自行配置,以便安装后即可使用,而无需用户方面的任何特殊工作。(在某些特殊情况下,您不想执行此操作,但是这种情况很少且相差很远。)
在Unixy环境中,有一个放置配置文件的位置,该配置文件在用户启动登录Shell时会读取。对于Bourne和C shell,可以将配置分别插入/etc/profile
和中/etc/csh.cshrc
。(不要忘记在卸载时将其删除。)
许多系统还支持使用单个文件来执行此操作,这使得添加和删除配置位变得更加容易,而不必将文本放入一个文件中的任意位置。(它还为您提供了从程序包管理器获得的所有控制和责任优势。)某些发行版将配置为/etc/profile
读取所有匹配的文件/etc/profile.d/*.sh
。
rc
脚本名称源自CTSSruncom
(运行命令),但此后范围扩大到包括其他含义。
问题软件包管理器的安装步骤是否应该修改用户的环境?
回答否。修改用户数据(在本例中为.bashrc文件)不是一个好主意。包裹管理者应该认为用户的数据是神圣的?
问题软件包管理器的安装步骤是否应该提示用户自己进行安装?
答案这是更可口的解决方案,但仍不理想。
我认为您应该创建一个包装器外壳脚本,在其中可以设置必要的环境变量,然后在它们之后运行可执行文件。
如果一个全局变量是由您自己的项目定义的,则可以在程序包中设置一个全局变量(这意味着该项目的名称是该变量名称的一部分!)。即使那样,您也不应触摸用户的.bashrc
文件,而应将脚本添加到/etc/profile.d。
.bashrc
我认为,这比打包hack或与之混为一谈。