![.desktop 文件似乎运行 .sh 文件可执行文件,但并未完成](https://linux22.com/image/1052410/.desktop%20%E6%96%87%E4%BB%B6%E4%BC%BC%E4%B9%8E%E8%BF%90%E8%A1%8C%20.sh%20%E6%96%87%E4%BB%B6%E5%8F%AF%E6%89%A7%E8%A1%8C%E6%96%87%E4%BB%B6%EF%BC%8C%E4%BD%86%E5%B9%B6%E6%9C%AA%E5%AE%8C%E6%88%90.png)
我希望我已经尽职尽责地搜索了以前的帖子。我是 ubuntu (14.04) 的新手,仍在学习。我找不到之前问过的这个问题。
我创建了一个 .sh 文件 (/home/Desktop/mountServer.sh),并设置了 properties->Execute 以允许将文件作为程序执行。如果我使用 手动从终端运行此 .sh cd Desktop/
,./mountServer.sh
它运行正常。当我运行 .desktop 文件“Mount Server.desktop”时,它会按照指示打开终端并提示我输入密码。但之后什么也没发生。它没有挂载我的磁盘。没有错误消息。
mountServer.desktop 代码:
[Desktop Entry]
Name=Mount Server
Comment=Mounts the Server 1.5 from Apple Airport Extreme
Exec=sudo /home/Desktop/mountServer.sh
Icon=/paht/to/icon.png
Terminal=true
Type=Application
mountServer.sh代码:
sudo mount -t cifs "//10.0.1.1/The Server 1.5" -o username=myusername,password=pwhere,sec=ntlm ~/capsule
答案1
这行代码好像有错,你的桌面文件夹不在/home
Exec=sudo /home/Desktop/mountServer.sh
并且不需要使用sudo
两次,一次在脚本中,一次在桌面文件中。
使用
Exec=/home/your_username/Desktop/mountServer.sh
相反,your_username
用你的用户名替换( 的输出echo $USER
)
你应该使用
$HOME/capsule
代替
~/capsule
在你的脚本中。
对你来说最好的解决方案是gksu
通过安装
sudo apt-get install gksu
像这样的桌面文件,your_username
用你的用户名替换(输出echo $USER
)
[Desktop Entry]
Name=Mount Server
Comment=Mounts the Server 1.5 from Apple Airport Extreme
Exec=gksu /home/your_username/Desktop/mountServer.sh
Icon=/paht/to/icon.png
Terminal=false
Type=Application
像这样的脚本
#!/usr/bin/env bash
mount -t cifs "//10.0.1.1/The Server 1.5" -o username=myusername,password=pwhere,sec=ntlm "$HOME"/capsule
使用此解决方案,您将获得图形密码提示,无需不必要的终端,如果您想直接在终端中启动脚本,您可以使用
sudo ~/Desktop/mountServer.sh