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/]

이 문제는 왜 발생하며 어떻게 해결할 수 있습니까? 노틸러스에서 쉘 스크립트를 두 번 클릭하면 쉘 스크립트 파일을 실행할 것인지 묻는 메시지가 나타납니다.

어떤 도움이라도 대단히 감사하겠습니다.

답변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이 제안한 한 가지 방법은 이렇게 하는 것입니다. 그러나 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 & 백그라운드에서 실행하는 것입니다.]

관련 정보