bash 编程。双击程序和控制台运行程序的区别

bash 编程。双击程序和控制台运行程序的区别

我写了一个名为vpn.sh的脚本,内容如下:

#!/bin/sh

cd /etc/openvpn

sudo openvpn client.ovpn &

当我在 konsole 中时,./vpn.sh 运行良好。但是当我双击 vpn.sh 文件时,它没有任何反应。有人能告诉我以上两种方法的区别吗?

答案1

我想说的是sudo在命令行中使用有效(因为它允许人们在命令行上输入密码),但可能无法在图形环境中工作。

在这种情况下,您应该使用gksudokdesudo,具体取决于您使用的桌面环境 - 请参阅图形化 sudo了解更多信息。

答案2

听起来您使用的任何文件浏览器都没有设置为将 .sh 文件作为 shell 脚本执行。当您在终端中输入 ./vpn.sh 时,它会在终端中将文件作为 shell 脚本执行。当您尝试通过双击文件来执行相同的操作时,您的文件浏览器未设置为以相同的方式处理脚本,因此不会执行任何操作。

答案3

当您双击它时,您是否以管理员/root 身份运行它?

当您从您使用的控制台运行它时sudo,这意味着您正在以 admin/root 身份运行该文件

相关内容