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

J D*_*J D 5 .desktop

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

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

[Desktop Entry]

Type=Application

Name=convertpics

Exec='/fullpath_to_script/convertpics.sh'

Terminal=true
Run Code Online (Sandbox Code Playgroud)

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

xub*_*tix 2

您的问题缺少一条重要信息:您希望脚本从 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
Run Code Online (Sandbox Code Playgroud)

结果菜单如下所示。

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

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

Ubuntu 维基页面

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


小智 0

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

[Desktop Entry]
Exec=/usr/bin/bash %f
Name=Bash
Terminal=false
Type=Application
Run Code Online (Sandbox Code Playgroud)