如何使 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。