現在、私はObsidianを最初に開き、Vaultブラウザを使用するのではなく、ファイルエクスプローラ自体でObsidian Notes Vaultを開く方法を理解しようとしています。
これを行うには、次のコマンドが機能します(私はObsidian Notes Appimageを使用しており、パッケージスタイルのインストールを好む)。
#!/bin/bash
/home/username/Desktop/Obsidian-1.5.11.AppImage "obsidian://open?vault=testvault"
(ボルト名とボルトフォルダ名はtestvault
)
.sh
Vaultフォルダ自体に保存されているファイルにコマンドを配置しました。
次に、Vaultフォルダでターミナルを開きます(スクリプトを実行するためにダブルクリックすると、コマンドが期待どおりに機能せず、指定されたVaultが開かず、最後に開かれたVaultのみが開かれるため、ターミナルを開く必要があります)。次にファイルを実行します.sh
。 。
./openvault.sh
今やりたいことは、Obsidian Notesアプリケーションを閉じずにVaultを開いた後に端末を自動的に閉じることです。
このために、以下を試しました。
#!/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
- スクリプトは新しいプロセスで実行されます。それ自体は、親の対話型シェルで終了できません。
- スクリプトは新しいプロセスで実行されます。
dismiss
もしやめれば子供たちは必要ないでしょう。 - 台本できる
kill
親プロセス。 いいえ! - 対話型シェルこのコマンドを使用して終了するには、対話型シェルがこれを行う必要があります。この場合、コマンドを実行して終了するには、エイリアス(私のbashマニュアル、セクション6.6)またはシェル関数(3.3)を定義する必要があるかもしれません。あるいは、
exec ./openvault.sh
対話型シェルをスクリプトに置き換えるなどのスクリプトを呼び出すこともできます。 - プログラムがしばらく実行されている場合(あなたの例ではこれを示すようです)、端末からプログラムを切り離すことができます。 Linuxでは、
setsid
たとえば、次のようにこれを実行できます。setsid /home/username/Desktop/Obsidian-1.5.11.AppImage ...
- デスクトップファイルに何があるかを見つけてそれを行うことをお勧めします。最終的に、デスクトップでファイル名を変更したり、ファイルをフォルダに移動したりすることもできます。すでに1つまたは2つのコマンドを入力している可能性があります。