Ubuntu 16.04でシェルスクリプトをダブルクリックすると、Nautilusはユーザーにシェルスクリプトファイルを編集するためのオプションのみを提供します。

Ubuntu 16.04でシェルスクリプトをダブルクリックすると、Nautilusはユーザーにシェルスクリプトファイルを編集するためのオプションのみを提供します。
When I follow the steps in 

[https://askubuntu.com/questions/138908/how-to-execute-a-script-just-by-double-clicking-like-exe-files-in-windows]

シェルスクリプトを実行するか、geditを使用して編集するかを尋ねるダイアログボックスを受け取ったことがあります。 LiveCDを使ってUbuntu Linux 16.04を再インストールし、sudo apt-get install mono-completeを実行しました。 Ubuntu 16.04 Nautilusでシェルスクリプトをダブルクリックすると、シェルスクリプトファイルのみを編集できます。

The contents of this shell script are:

#!/bin/bash
exec /usr/bin/mono-service.exe ./AudioRecorder.exe  "$@".

as specified in 

  [http://www.mono-project.com/archived/guiderunning_mono_applications/]

この問題はなぜ発生し、どのように解決できますか? Nautilusでシェルスクリプトをダブルクリックすると、シェルスクリプトファイルを実行するように求められます。

どんな助けでも大変感謝します。

答え1

まず、/usr/bin/mono-service.exe存在しません。

次に、投稿したリンク。スクリプトは次のようにする必要があります。

#!/bin/sh
/usr/bin/mono /usr/lib/mono/4.5/mono-service.exe ./AudioRecorder.exe  "$@"

または

#!/bin/sh
/usr/bin/mono-service ./AudioRecorder.exe  "$@"

または

#!/bin/bash
mono ./AudioRecorder.exe  "$@"

または

#!/bin/sh
/usr/bin/mono ./AudioRecorder.exe  "$@"

ただし、これはexeファイルがホームフォルダにある場合にのみ機能し、理想的にはexeファイルがホームフォルダにある場合は、次のようにexeファイルの実際のパスを含める必要があります。

#!/bin/sh
/usr/bin/mono /usr/lib/mono/4.5/mono-service.exe ~/AudioRecorder.exe  "$@"

または

#!/bin/sh
/usr/bin/mono-service ~/AudioRecorder.exe  "$@"

または

#!/bin/bash
mono ~/AudioRecorder.exe  "$@"

または

#!/bin/sh
/usr/bin/mono ~/AudioRecorder.exe  "$@"

またはファイルがダウンロードフォルダにある場合:

#!/bin/sh
/usr/bin/mono /usr/lib/mono/4.5/mono-service.exe ~/Downloads/AudioRecorder.exe  "$@"

または

#!/bin/sh
/usr/bin/mono-service ~/Downloads/AudioRecorder.exe  "$@"

または

#!/bin/bash
mono ~/Downloads/AudioRecorder.exe  "$@"

または

#!/bin/sh
/usr/bin/mono ~/Downloads/AudioRecorder.exe  "$@"

答え2

私の質問に対する答えを見つけたURLは次のとおりです。

Linux Bash スクリプトをダブルクリックし、Pause コマンドを使用してデバッグします。

@terdonの答えはとても良いです。

スクリプトと対話するには端末が必要です。 @Sebastianが提案した1つの方法はこれを行うことです。しかし、bashスクリプトは実際にはこのように実行するようには設計されていません。よりきれいなアプローチは、スクリプトを起動する.desktopファイルを作成してからファイルをダブルクリックすることです。それは次のとおりです。

[Desktop Entry]
Exec=/home/user/yourscript.sh
Terminal=true
Type=Application

このファイルを ~/Desktop フォルダーに foo.desktop として保存します。これでアイコンで表示されます。アイコンをダブルクリックすると、スクリプトが端末で実行されます。明らかに、/home/user/yourscript.shをスクリプトの実際のパスに変更する必要があります。

一つの質問がまだ開いています。 @terdonのエミュレータを使用してstdin、stdout、stderrを/ dev / nullにリダイレクトする方法は?

[2016年6月2日午前4時30分に修正されましたstdoutとstderrをリダイレクトする方法は、mono-service ./AudioRecorder.exe&バックグラウンドで実行することです。]

関連情報