我已经使用/etc/profile以下方法设置了我的环境变量:
export VAR=/home/userhome
Run Code Online (Sandbox Code Playgroud)
然后,如果我这样做,echo $VAR它会显示/home/userhome
但是当我把这个变量的引用放到/etc/init.d/servicename文件中时,它找不到这个变量。当我service servicename status使用/etc/init.d/servicename具有以下内容的文件运行时:
case "$1" in
status)
cd $VAR/dir
;;
esac
Run Code Online (Sandbox Code Playgroud)
它说 /dir: No such file or directory
但如果我运行/etc/init.d/servicename status而不是service servicename status
如何让 unix 服务看到环境变量?
似乎我添加了不正确的记录/etc/fstab:
//servername/share /mnt/share cifs defaults,username=myuser 0 0
Run Code Online (Sandbox Code Playgroud)
当我这样做时mount -a,它要求用户密码来安装网络共享。似乎在启动时没有密码就无法继续,所以它只是挂了。
如何修复 fstab 以防止启动失败?
如果我在root用户下运行包含的脚本su -m user service userservice start,则不需要输入密码。但是当我在user用户下运行它时,它总是询问密码。这真让我烦恼。出于安全原因是否应该询问密码?su -m user command如果在以下环境下运行,有什么方法可以避免询问密码user?
Edit1:su我需要避免当前用户输入密码的原因是/etc/init.d/scripts它对su -m user我安装的许多服务都有声明。如果我重新启动应该在当前用户下运行的服务,每次输入密码似乎很愚蠢。实际上,我在重新启动某些服务时需要输入密码两次。我可能同意这是某些init.d 脚本的一个功能,我需要做的就是稍微调整源代码,但我认为它可能会在级别上以某种方式修复,su以避免更改 init.d 脚本源代码。