自定义 sudo 命令

自定义 sudo 命令

如何使 sudo 命令可以访问自定义函数?

我的 Mac OS X 已安装 Bootcamp,同时还安装了 VirtualBox,因此我可以运行 Windows 以在 IE 中测试网站。我必须运行以下一系列命令才能在 VirtualBox 中启动 Windows:

sudo chmod 777 /dev/disk0s4
sudo chown myUserAccount bootcamp.vmdk bootcamp-pt.vmdk
sudo umount /Volumes/BOOTCAMP
VBoxManage list vms
VBoxManage startvm <uid>

做这个很麻烦,所以我想让它自动化。我创建了一个名为训练营在我保存的个人发展文件夹中。我尝试将以下内容包含在几个文件中:

. /Users/myUserAccount/Development/Bash/bootcamp.sh

我曾尝试将其包括在内:

  • 我的个人 .bash_profile(显然不起作用)
  • 在 /etc/bashrc 中
  • /私人/等/ bashrc
  • /private/etc/profile。

我还尝试在 /usr/bin/ 中创建一个名为 bootcamp(无扩展名)的符号链接,并且该操作部分有效,使我可以执行以下操作:

sudo sh bootcamp

但我仍然很烦必须写在那里。我尝试在顶部包含一个 shebang (#! /usr/bin/sh)训练营文件,但没有运气。

提前致谢!

答案1

如果 shebang 是正确的路径,那么您只需要使脚本可执行,以避免需要sh

chmod +x /用户/myUserAccount/开发/Bash/bootcamp.sh

只要/Users/myUserAccount/Development/Bash/在路径中,你就可以这样做

sudo bootcamp.sh

您实际上也不需要 .sh 后缀,您可以将其重命名为 bootcamp。

缺点是您将以 root 身份运行 VBoxManage。因此,我会将命令

sudo chmod 777 /dev/disk0s4
sudo chown myUserAccount bootcamp.vmdk bootcamp-pt.vmdk
sudo umount /Volumes/BOOTCAMP
VBoxManage list vms
VBoxManage startvm <uid>

将其原样放入 bootcamp.sh 文件中。然后将其运行为

bootcamp.sh

系统将提示您在第一个 sudo 中提供密码,但这意味着 VBox 命令将以普通用户身份运行。

答案2

您必须使用以下命令使文件可执行

chmod +x bootcamp.sh

此外,如果您使用 sudo 调用脚本,则不需要在脚本中使用 sudo。

相关内容