這是我透過 Ask Ubuntu 提出的第一個問題,所以我想提前感謝您的耐心等待。
我的情況是這樣的:我有一個*.desktop
檔案(我寫的)應該執行 shell 腳本。我最初的意圖是將這個文件放入其中,~/.config/autostart
以便它在啟動時自動運行;然而,這會導致 Ubuntu 瞬間刷新桌面,然後退出。我可以雙擊桌面上的文件,它將像預期的那樣啟動腳本。如果我將*.desktop
檔案從~/Desktop
目錄中取出並放在其他任何地方,在 Nautilus 中雙擊它也會導致我立即登出。
該*.desktop
文件被設定為執行bash
以gnome-terminal
.我這樣做的原因並不一定重要,所以請假設這就是我需要的方式。如果我新增sleep 10
到第一個 shell 腳本的開頭,則*.desktop
無論檔案如何啟動,我都會在啟動檔案 10 秒後登出。問題似乎在於,一個新gnome-terminal
視窗是從第二個腳本啟動的,但我不明白這是如何或為什麼會這樣。桌面入口:
[Desktop entry]
Name=Autocapture
Comment=Starts autocap program
Exec=/Autocapture/Startup/InitSystem
Terminal=false
Type=Application
初始化系統:
#!/bin/bash
nohup gnome-terminal --title=Autocapture --maximize -e "bash -c 'bash /Autocapture/Startup/StartAutocap.sh';bash"
wmctrl -a "Autocapture" # Give focus to new terminal window
kill -9 $PPID # Close this terminal
啟動Autocap.sh:
#!/bin/bash
source /usr/local/bin/virtualenvwrapper.sh
workon Autocap
python /path/to/python/module.py
這應該(並且成功地執行,如果從桌面啟動)啟動一個全螢幕gnome-terminal
視窗運行並在該 bash 會話中bash
啟動「 」程式。module.py
它還關閉gnome-terminal
啟動並分離子進程的第一個視窗。
抱歉第一篇文章太長了。我只是想了解這裡出了什麼問題以及如何解決它。任何幫助是極大的讚賞!
答案1
雖然我有自己的理論,但我不敢宣稱我確切地(甚至遠遠地)知道這是如何或為什麼起作用的。我想這與啟動器執行其目標的方式有關*.desktop
。也許我試圖在腳本執行結束時關閉 gnome-terminal 視窗並最終終止我的會話?也許反之亦然?我不聲稱知道,但我會邀請任何知道的人請回答這個問題並給出你的解釋以便其他人可以從我的錯誤中學習。
去掉線kill -9 $PPID
就解決了問題
如果從啟動器執行腳本*.desktop
,則初始gnome-terminal
視窗將關閉,留下第二個視窗。如果從命令列(例如,$ bash InitSystem
)執行腳本,則初始gnome-terminal
視窗不會關閉。