여기에 Debian 8.3, Linux 4.1.15-ti-rt-r43을 실행하는 BeagleBone Black이 있습니다. 데스크탑은 LXQT입니다.
시작 시 .sh 파일을 실행하고 싶습니다. 경로를 변경하고 일부 변수를 설정한 후 모노를 호출하여 데스크탑 환경이 준비되면 GUI 기반 프로그램을 시작합니다.
시작 메뉴 사용:
환경 설정->LXQt 설정->세션 설정->자동 시작
먼저 "Global Autostart" 아래에 항목을 추가하고 나중에 "LXQt Autostart" 아래에 항목을 추가했습니다(한 번에 두 상자 중 하나만 선택). "검색..." 버튼을 통해 "명령" 아래에 .sh 스크립트 경로를 지정했습니다. 즉, 오타가 발생할 가능성이 없습니다. "시스템 트레이를 기다리는 중"을 선택하고 선택 취소해 보았습니다. "종료"를 클릭하고 매번 시작 메뉴를 통해 기기를 다시 시작해 보세요.
데스크탑이 시작된 후에는 아무 일도 일어나지 않습니다. 그러나 스크립트는 ssh Remote* 명령 프롬프트(응용 프로그램 시작)에서 제대로 실행됩니다. 또한 바탕화면에 복사한 후 클릭하세요. - 확인을 클릭하세요.
_* .sh 파일에는 ssh를 통해 GUI 응용 프로그램을 시작하는 데 처음 사용되기 때문에 "export DISPLAY=:0" 줄이 포함되어 있습니다. 여기서 변경 사항이 있는지 확인하기 위해 주석을 달았지만 변경되지 않습니다.
편집하다: 이제 수동으로 하나 만들어 보겠습니다.. 데스크탑파일 입력~/.config/autostart- 위에서 언급했듯이 UI에서 클릭하면 해당 폴더에 생성된 .desktop 파일 LXQt를 확인할 수 있습니다. 내 파일에서 .sh 스크립트 실행 경로 등을 지정하고 추가 옵션을 true로 설정합니다. "터미널"은 자동 시작 프로그램이 터미널에서 실행되어야 함을 지정합니다. 이것이 나에게 보여주는 것은 - 예, 사실입니다.무엇터미널이 표시되므로 데스크탑 환경을 시작/로드한 후 시작합니다. 즉, 자동 시작 파일이 무시되지 않습니다. 하지만 내 .sh 스크립트의 "echo" 명령이 해당 터미널에 표시되지 않고 모노 애플리케이션도 시작되지 않습니다. 그런 다음 다른 원격 셸을 열고 "Exec" 아래의 autostart .desktop 파일에 제공한 경로를 복사하여 붙여넣으면 예상대로 내 응용 프로그램이 실행되므로 경로가 정확합니다.
그래서 거기서 무슨 일이 일어났나요? LXQt 데스크탑은 분명히 내 파일을 찾고 자동 시작을 시도했지만 아무 작업도 수행하지 않았습니다. 가능한 이유는? 나는 데스크탑이 로드되었음에도 불구하고 모노/GUI가 아직 준비되지 않았을 수도 있다고 생각했습니다(이 모든 것이 내부적으로 어떻게 작동하는지 실제로 알지 못함). 그리고 몇 가지 재미있는 이유로 에코 "sleep..." ..."을 넣었습니다. 30초 동안 대기하고 자동으로 실행되어야 하는 .sh 파일에서 모노 애플리케이션을 호출하기 전에 "모노 애플리케이션 호출 중..."을 에코합니다. 현재 시작할 때 열리는 터미널에는 이들 중 어느 것도 표시되지 않으며 도움이 되지 않습니다.
답변1
네, 작동합니다. 나는 이 질문에 대해 아주 정확한 답을 갖고 있지 않다.왜다음과 같은 차이점 외에도 자동 시작이 작동하지 않습니다. .sh 파일이 작동하지 않고 애플리케이션이 직접 작동합니다.
내가 지금 하는 일:
내가 만든 자동 시작 폴더에서 기존 .desktop 파일을 삭제한 후이것하나:
$ nano ~/.config/autostart/MyAppName.desktop
이것을 삽입하세요:
[Desktop Entry]
Exec=mono /full/path/to/mono_c#/gui/app/myappname.exe
Path=/full/path/to/working/directory
Name=MyAppName
Type=Application
Version=1.0
참고: 여기에서 path 변수를 통해 발견된 "Exec"의 실행 파일은 mono이고 해당 명령줄 arg는 mono 프레임워크에서 실행되는 "실행 파일"의 경로입니다.
이것은 예상대로 작동합니다. 다시 시작 -> 응용 프로그램이 시작됩니다.
편집: 나에게 있어 응용 프로그램에는 Path에 의해 할당된 작업 디렉터리가 없었습니다. 내 어딘가에 버그가 있을 수 있지만 만일의 경우에 대비해 언급하겠습니다.
이제 원본 .sh 파일에서 작업을 수행하고 싶지만 여기서는 작동하지 않습니다. 따라서 누군가가 정확히 무슨 일이 일어나고 있는지 말해 줄 수 있을 경우를 대비해 아직은 내 답변을 "수락"하지 않겠습니다.
편집 - 일부 참고 자료:
https://wiki.archlinux.org/index.php/Desktop_entries#File_example
https://specations.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html#recognized-keys
답변2
따라서 여기서 문제는 어느 시점에서 귀하 또는 다른 누군가가 lxqt-config-session을 실행했다는 것입니다. lxqt-config-session은 이를 빌드할 수 있는 그래픽 애플리케이션이지만 새 시작 항목에 기본 이름이 없습니다. 비어 있습니다. 의. 결과적으로 생성된 파일의 이름은 ".desktop"입니다. 이는 숨겨진 파일이며 어떤 상황에서도 특정 와일드카드 검색과 일치하지 않습니다. 그럼에도 불구하고 ".desktop"이라는 이름은 모두 무시됩니다.
lxqt-config-session을 사용하여 설정하거나 파일을 수동으로 생성하든 "foo.desktop"과 같은 일반 이름을 사용하는 것이 좋습니다.
솔직히, lxqt-config-session이 해당 이름을 비워두는 것을 허용한다는 사실은 제 생각에는 다소 심각한 버그입니다.