我有一个非常简单的。deb包postist文件:
#!/bin/sh
echo 'alias command_pandora="sudo /usr/local/bin/pandora"' >> ~/.bashrc
echo 'Pandora Storage Server Installation complete.'
当我运行它时,我甚至得到"潘多拉存储服务器安装完成"。’消息,但是没有附加到~/.bashrc
;然而,当我在终端中单独运行这个命令时:
echo 'alias command_pandora="sudo /usr/local/bin/pandora"' >> ~/.bashrc
确实有效。我已经尝试修改~/.bashrc
的文件权限,但仍然得到相同的结果。我还尝试运行具有相同内容的单独脚本并运行它,它也可以工作,所以它似乎与dpkg有关。
为什么内容没有被追加?
postinst
脚本作为root
运行。包安装是一个系统安装实用程序;它绝对不应该修改用户的私人文件,包括root
的。
如果工具需要通过sudo
的特权访问,也许可以重构它,使其与sudo
一起运行(可能只有在连接到终端时才这样做,以防止它在无人参与的情况下运行时挂起)。
或者,简单地将/usr/bin/command_pandora
包含在包中,并包含以下内容:
#!/bin/sh
exec sudo /usr/local/bin/pandora "$@"
(稍微地,我想它可以添加一些/etc/skel/.bashrc
,但这只会为在此更改之后创建的用户或.bashrc
预先运行source /etc/skel/.bashrc
的用户创建一个新别名。我也不认为这是个好主意。