我正在使用PackageMaker为我的应用程序创建安装程序。在安装过程中,我需要运行一个bash脚本来正确安装rxtx,一个用于串口通信的JNI库。这个库需要有用户“root”和组“uucp”的目录/ var/lock。安装脚本还需要将当前用户添加到组“uucp”,以便lib能够写入/ var/lock。rMx的PackageMaker安装脚本
现在,当我运行我的应用程序安装程序时,预安装脚本以root身份运行。因此,“whoami”返回的是根,而不是实际运行安装程序的用户。结果是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