我写了一个名为vpn.sh的脚本,内容如下:
#!/bin/sh
cd /etc/openvpn
sudo openvpn client.ovpn &
当我在 konsole 中时,./vpn.sh 运行良好。但是当我双击 vpn.sh 文件时,它没有任何反应。有人能告诉我以上两种方法的区别吗?
答案1
我想说的是sudo
在命令行中使用有效(因为它允许人们在命令行上输入密码),但可能无法在图形环境中工作。
在这种情况下,您应该使用gksudo
或kdesudo
,具体取决于您使用的桌面环境 - 请参阅图形化 sudo了解更多信息。
答案2
听起来您使用的任何文件浏览器都没有设置为将 .sh 文件作为 shell 脚本执行。当您在终端中输入 ./vpn.sh 时,它会在终端中将文件作为 shell 脚本执行。当您尝试通过双击文件来执行相同的操作时,您的文件浏览器未设置为以相同的方式处理脚本,因此不会执行任何操作。
答案3
当您双击它时,您是否以管理员/root 身份运行它?
当您从您使用的控制台运行它时sudo
,这意味着您正在以 admin/root 身份运行该文件