如何让 .sh 文件默认在终端中运行 - 使用 .desktop 文件时出现问题

如何让 .sh 文件默认在终端中运行 - 使用 .desktop 文件时出现问题

我有一个小的 .sh 文件,用于批量转换图片文件。我只需将这个小文件复制到文件夹中并运行它即可转换文件夹中的所有图片。这很有效,但每次都会出现“在终端/显示/运行中运行”选项,这让我很烦。

我尝试创建一个 .desktop 文件,如其他帖子中所示,名为convertpics.desktop

[Desktop Entry]

Type=Application

Name=convertpics

Exec='/fullpath_to_script/convertpics.sh'

Terminal=true

然后我将convertpics.desktop文件设置为可执行文件。现在当我双击convertpics.desktop(现在显示为convertpics)时,它确实运行了脚本,但它在我的主文件夹而不是我所在的文件夹中运行它。有没有办法让它使用当前文件夹作为工作文件夹?

答案1

您的问题缺少一个重要信息:您想从 nautilus 运行脚本,对吗?

好的,假设您想执行以下操作(这不完全符合您的描述,但足够接近):

  1. 使用 nautilus(文件管理器)导航到文件夹。
  2. 右键单击该文件夹并以当前文件夹作为参数运行脚本

您可以按照以下方式进行操作:

  • 创建脚本(例如在 bash 中)并将其保存在文件夹中~/.gnome2/nautilus-scripts/
  • 在脚本中,使用“$PWD”代替目录路径
  • 使脚本可执行

然后您可以导航到该文件夹​​,右键单击,转到脚本,单击您的脚本,它将在当前文件夹中运行。

infoHere.sh例如:脚本~/.gnome2/nautilus-scripts/

#!/bin/bash
echo "\$* = $*" >> info.txt
echo "NAUTILUS_SCRIPT_SELECTED_FILE_PATHS = $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" >> info.txt
echo "NAUTILUS_SCRIPT_CURRENT_URI = $NAUTILUS_SCRIPT_CURRENT_URI" >> info.txt
echo "PWD = $PWD" >> info.txt

最终的菜单如下所示。

运行此脚本将输出一个名为的文件,info.txt其中包含您可以在脚本中使用的重要环境变量的内容。

有关 nautilus 脚本的更多信息请参见此处:

Ubuntu Wiki 页面

邮件列表条目(示例脚本的灵感来源于此)

答案2

尝试将其作为您的桌面条目,您可能需要在 %f 周围添加引号。

[Desktop Entry]
Exec=/usr/bin/bash %f
Name=Bash
Terminal=false
Type=Application

相关内容