目前,我正在尝试弄清楚如何从文件资源管理器本身打开 Obsidian Notes Vault(而不是首先打开 Obsidian 并使用 Vault 浏览器)。
为此,以下命令有效(我使用的是 Obsidian Notes Appimage,我更喜欢包样式安装):
#!/bin/bash
/home/username/Desktop/Obsidian-1.5.11.AppImage "obsidian://open?vault=testvault"
(保管库的名称以及保管库文件夹的名称为testvault
)
我将该命令放入.sh
保存在 Vault 文件夹本身中的文件中。
然后,我在保管库文件夹中打开一个终端(打开终端是必要的,因为当双击运行脚本时,该命令无法按预期工作,它不会打开指定的保管库,而只是打开最后打开的保管库),然后运行该.sh
文件。
./openvault.sh
现在我想做的是在金库打开后自动关闭终端,而不关闭黑曜石笔记应用程序。
为此,我尝试了以下方法:
#!/bin/bash
/home/username/Desktop/Obsidian-1.5.11.AppImage "obsidian://open?vault=testvault" & disown && exit
# `&&` after `disown` so that `exit` only gets executed after disown is successfully executed
现在这仅部分起作用。它设法执行该disown
命令。这样,当我使用终端应用程序的关闭按钮关闭终端时,Obsidian Notes 会继续运行。
但该exit
命令不执行。如何使其也执行?
这是运行命令时的终端日志:
2024-03-22 09:26:20 Loading main app package /tmp/.mount_Obsidi8hbnvd/resources/obsidian.asar
xdg-settings: default-url-scheme-handler not implemented for xfce
Received callback URL obsidian://open?vault=tesvault
2024-03-22 09:26:21 Checking for update using Github
2024-03-22 09:26:21 Success.
2024-03-22 09:26:21 Latest version is 1.5.11
2024-03-22 09:26:21 App is up to date.
光标只是在日志的最后一行下方不断闪烁,而不是终端返回到提示符username@machinename:/current/working/directory$
。
答案1
- 脚本在新进程中执行。它本身无法从父交互式 shell 中退出。
- 脚本在新进程中执行。
dismiss
如果他们要退出,就不需要孩子。 - 一个脚本可以
kill
父进程。 不! - 为了使交互式 shell 因命令而退出,交互式 shell 必须执行此操作。在这种情况下,您可能需要定义一个别名(在我的 bash 手册中,第 6.6 节)或 shell 函数 (3.3) 来运行命令并退出。或者,可以调用脚本,例如
exec ./openvault.sh
用脚本替换交互式 shell。 - 如果程序保持运行一段时间(您的示例似乎表明了这一点),您可能希望将其与终端分离。在 Linux 中,您可以使用 来执行此操作
setsid
,例如:setsid /home/username/Desktop/Obsidian-1.5.11.AppImage ...
- 您最好找出桌面文件中的内容,然后执行此操作。毕竟,您可能会重命名桌面上的文件,或将其移动到文件夹中,...它可能已经是一两个命令了。