我正在bash中为Linux上的应用程序编写安装脚本.
此脚本将一些文件复制到/ usr/bin和/ usr/share中,因此需要由root用户执行,此外它还会在$ HOME目录中为配置文件创建一个隐藏目录.
问题是:如果普通用户想要安装程序,他需要是root用户.但如果他是root用户,$ HOME目录将是/ root /而不是/ home/username.
...而且,如果UserA安装软件,但UserB运行它,UserB将不会有隐藏目录/home/UserB
.此外,隐藏目录/home/UserA
将由root拥有,而不是userA.
因此,您需要让应用程序创建隐藏目录,而不是安装程序.
另一种可能的选择是不安装在系统目录中; 一个可能的替代位置是/usr/local
.但是,即使这样也需要root权限.想想它是否可以安装在其他地方,以及它如何定位其材料.
但是,要求安装root权限并不是世界末日 - 对某些人来说是一种麻烦,但并非完全无序.但要求所有使用root权限的人都会出现故障 - 如果使用它的每个人都需要运行安装程序,那就太糟糕了.
最后一点(现在):如果你使用sudo
,它不会改变$ HOME的值,即使你获得root权限也是如此.但是,要求每个使用您的应用程序的人都拥有sudo
特权也不是一件好事.