[英].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.