繁体   English   中英

.Deb package postinst 文件未将数据附加到 ~/.bashrc

[英].Deb package postinst file not appending data to ~/.bashrc

我有一个非常简单的 postinst 文件 a.Deb package:

#!/bin/sh

echo 'alias command_pandora="sudo /usr/local/bin/pandora"' >> ~/.bashrc

echo 'Pandora Storage Server Installation complete.'

当我运行它时,我什至会看到“Pandora 存储服务器安装完成”。 消息,但没有任何内容附加到~/.bashrc 尽管如此,当我在终端中单独运行此命令时:

echo 'alias command_pandora="sudo /usr/local/bin/pandora"' >> ~/.bashrc

它确实有效。 我已经尝试修改~/.bashrc的文件权限,但仍然得到相同的结果。 我也试过用同样的内容运行一个单独的脚本并运行它也有效,所以它似乎与 dpkg 有关。

为什么不附加内容?

postinst脚本以root身份运行。 Package安装是系统安装工具; 它绝对不应该修改用户的私人文件,包括root的私人文件。

切线地,定义别名似乎是解决问题的错误方法。 通常,比别名更喜欢函数或 shell 脚本。

如果该工具需要通过sudo进行特权访问,则可能会重构它以使用sudo自行运行(可能会检查仅在连接到终端时执行此操作,以防止它在无人值守时挂起)。

或者,简单地将/usr/bin/command_pandora包含在 package 中,内容如下:

#!/bin/sh
exec sudo /usr/local/bin/pandora "$@"

(勉强,我想它可以向/etc/skel/.bashrc添加一些东西,但这只会为在此更改后创建的用户或.bashrc有先见之明地运行source /etc/skel/.bashrc的用户创建一个新别名。我也不认为这是个好主意。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM