我正在使用PackageMaker为我的应用程序创建安装程序。在安装过程中,我需要运行一个bash脚本来正确安装rxtx,这是一个用于串口通信的JNI库。该库需要将目录/ var / lock与用户“root”和组“uucp”放在一起。安装脚本还需要将当前用户添加到组“uucp”,以便lib能够写入/ var / lock。
现在,当我运行应用程序安装程序时,预安装脚本以root身份运行。因此,“whoami”返回root而不是实际运行安装程序的用户。结果是rxtx无法在/ var / lock中创建锁文件,因为实际用户没有作为成员添加到“uucp”。
如何在安装程序运行脚本时获取用户。或者将/ var / lock的权限设置为不同的组可能更好吗?欢迎任何建议!
#!/bin/sh curruser=`whoami` logger "Setting permissions for /var/lock for user $curruser!" if [ ! -d /var/lock ] then logger "Creating /var/lock!" sudo mkdir /var/lock fi sudo chgrp uucp /var/lock sudo chmod 775 /var/lock # MacOSX 10.5 and later use dscl if [ `sudo dscl . -read /Groups/uucp GroupMembership | grep $curruser | wc -l` = "0" ] then logger "Add user $curruser to /Groups/uucp!" sudo dscl . -append /Groups/uucp GroupMembership $curruser # to revert use: # sudo dscl . -delete /Groups/uucp GroupMembership $curruser else logger "User already member of group uucp!" fi
答案 0 :(得分:0)
而不是
curruser=`whoami`
我现在正在使用
curruser=`users`
它为我提供了当前登录用户的列表,这部分解决了问题。剩下的问题是:
如果在安装时确实有两个或更多用户登录到Mac,我的脚本将无法将用户添加到组uucp。
如果Mac上的其他用户想要运行我的应用程序,它将再次失败,因为该用户未添加到组uucp。
也许有人对这些问题有所暗示?