![Ubuntu 16.04에서 쉘 스크립트를 두 번 클릭하면 Nautilus는 사용자에게 쉘 스크립트 파일을 편집할 수 있는 옵션만 제공합니다.](https://linux55.com/image/7775/Ubuntu%2016.04%EC%97%90%EC%84%9C%20%EC%89%98%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A5%BC%20%EB%91%90%20%EB%B2%88%20%ED%81%B4%EB%A6%AD%ED%95%98%EB%A9%B4%20Nautilus%EB%8A%94%20%EC%82%AC%EC%9A%A9%EC%9E%90%EC%97%90%EA%B2%8C%20%EC%89%98%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%ED%8E%B8%EC%A7%91%ED%95%A0%20%EC%88%98%20%EC%9E%88%EB%8A%94%20%EC%98%B5%EC%85%98%EB%A7%8C%20%EC%A0%9C%EA%B3%B5%ED%95%A9%EB%8B%88%EB%8B%A4..png)
When I follow the steps in
쉘 스크립트를 실행할 것인지 아니면 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 & 백그라운드에서 실행하는 것입니다.]