ターミナルでコマンドを開いて実行する.desktopファイルを作成します


39

Exec.desktopファイルのコマンドを記述して新しいターミナルを開き、その中でシェルスクリプトを実行する方法を知りたいです。シェルスクリプトは動作しており、すべてのユーザーがアクセスできます。ターミナルからスクリプトを起動するとすべてが機能しますが、.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に設定されています。

回答:


46

デスクトップファイルのコンテンツは次のようになりますテキストエディターを使用して.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(おそらくあなたの予想に反して)に設定されtrue、2番目のケースではに設定されますが、結果は両方のケースで同じです。


1
最初の解決策は私のために機能するので、私はそれに固執します。なぜ$ SHELLが必要なのか知っていますか?
Paradiesstaub

1
@Thibautはい、もちろんです。
ラドゥラデアヌ14年

それは私のために働いたが、私はsudoでコマンドを起動したいので、使用するランチャーが作成されたときにパスワードを要求するターミナルasking-meを開きます。コマンドを起動してこの動作を防ぐにはどうすればよいですか?
E_Angel 16

1
@EliasAlves少し遅れていますが、これを読んでいる他の人にとっては、自分自身を認証することなくルート権限を必要とするコマンドを実行することは期待できません。(明示的にそれを行うようにシステムを設定しない限り、これは一般的に悪い考えです。)
code_dredd

私は質問だと思います:資格情報を入力できるように端末が消えないように端末を表示する方法を確認する方法
-RockScience

2
!#/bin/bash

gnome-terminal -e YOUR_COMMANDS

上記のファイルを作成します。することを忘れないでくださいsudo chmod +x filename.sh


1
このソリューションの問題は、ターミナルがすぐに消えて、ユーザーが何かを入力できないことです。
Paradiesstaub

私はそれが何と呼ばれるかを忘れましたが、私は端末を維持するオプションがあると思います。それはあるかもしれないhold
Mr.Lee

2

単に追加する

;$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;

0

私はこれをします。テキストファイルの最初の行は!#/ bin / bashです

テキストファイルの後続の行は、コマンド(シェルスクリプト)です。

ファイルをsomething.shとして保存します

ファイルのプロパティを開き、実行ファイルをプログラムとして有効にします。

ファイルをダブルクリックすると、実行するオプションが表示されます。


2
ここでも同じように、ターミナルはすぐに消えます。
Paradiesstaub

私には何の問題もありません。シェルスクリプトを作成し、!#/ bin / bashという行を最初の行として追加します。ファイルを実行可能ファイルとして実行できるようにします。ダブルクリックして、ターミナルで実行を選択します。それはただ動作します。
ハッターマン14年

1
シェルスクリプトが終了したため、ターミナルが閉じているだけではないのですか?スクリプトの最初にsleep 30を設定すると、端末は30秒間開いたままになりますか?
ハッターマン14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.