. deb包postist文件不追加数据到~/.bashrc



我有一个非常简单的。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的。

从切线上看,定义别名似乎是解决问题的错误方法。一般来说,比起别名,更喜欢函数或shell脚本。

如果工具需要通过sudo的特权访问,也许可以重构它,使其与sudo一起运行(可能只有在连接到终端时才这样做,以防止它在无人参与的情况下运行时挂起)。

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

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

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

相关内容

  • 没有找到相关文章

最新更新