.desktopファイルのExec
コマンドを記述して新しいターミナルを開き、その中でシェルスクリプトを実行する方法を知りたい。シェルスクリプトは動作しており、すべてのユーザーがアクセスできます。ターミナルからスクリプトを起動するとすべてが機能しますが、.desktopファイルからスクリプトを起動しようとすると機能しません。
私がすでに試したいくつかの組み合わせは次のとおりです。
Exec=gnome-terminal -x sh -c 'echo hello'
Exec=sh -c 'gnome-terminal echo hello'
Exec=sh -c 'echo hello'
Exec=echo hello
.desktop端末オプションはtrueに設定されています。
デスクトップファイルのコンテンツは次のようになります( テキストエディターを使用して.desktopファイルを作成する方法 を参照):
[Desktop Entry]
Version=1.0
Name=Test
Comment=Test the terminal running a command inside it
Exec=gnome-terminal -e "bash -c 'echo hello;$Shell'"
Icon=utilities-terminal
Terminal=false
Type=Application
Categories=Application;
または:
[Desktop Entry]
Version=1.0
Name=Test
Comment=Test the terminal running a command inside it
Exec=bash -c 'echo hello;$Shell'
Icon=utilities-terminal
Terminal=true
Type=Application
Categories=Application;
最初のケースでは、Terminal
フィールドはfalse
(おそらくあなたの予想に反する)に設定され、2番目のケースではtrue
に設定されますが、結果は両方とも同じです。
!#/bin/bash
gnome-terminal -e YOUR_COMMANDS
上記のファイルを作成します。 Sudo chmod +x filename.sh
を忘れないでください
単に追加する
;$Shell
コマンドの最後に。
私のようにsnapd
は夜のほとんどの時間にシステムの全帯域幅を使用してスナップを更新するものではありません。
そこで、これは.sh
ファイルにリンクされた.desktop
ファイルを作成するのに役立ちました。.sh
ファイルのコンテンツは
echo <your password> | Sudo -S systemctl stop snapd.service
Sudo systemctl disable snapd.service;$Shell
-S
ファイルの最初の行の.sh
は、STDINPUT
をSudo
コマンドに送信するために使用され、パスワードを入力せずに直接実行することを意味します。
.desktop
ファイルの内容は次のとおりです。
[Desktop Entry]
Version=1.0
Name=Test
Comment=Test the terminal running a command inside it
Exec=gnome-terminal -e "/scripts/disable_snap.sh"
Icon=terminal
Terminal=true
Type=Application
Categories=Application;
私はこれをします。テキストファイルの最初の行は!#/ bin/bashです
テキストファイルの後続の行はコマンド(シェルスクリプト)です。
ファイルをsomething.shとして保存します
ファイルのプロパティを開き、実行ファイルをプログラムとして有効にします。
ファイルをダブルクリックすると、実行するオプションが表示されます。