シェルスクリプトがあります。起動時にスクリプトが自動的に実行されるように構成したい。 GUIからこれを行う方法を知っています。しかし、私はこれをターミナルからやりたかった。これどうやってするの?
一次調査で、ファイルを/etc/int.d/
ディレクトリに移動する必要があることがわかりました。ただし、この操作にはSudo権限が必要です。 スーパーユーザー権限なしでこれを実行したかった
また、~/.config/autostart/
の下に、スタートアップアプリケーションに関する設定があるファイルがあることもわかりました。しかし、これを達成するためにそれらを編集する方法がわかりません。
誰かがこれを達成するための正確な手順を教えてもらえますか?
質問で述べたように、コマンドはログイン時にランチャーを~/.config/autostart
に配置することで実行できます。ランチャーはスクリプトの起動にのみ使用されるため、作成された.desktop
ファイル:少なくとも必要なキーワード/行:
[Desktop Entry]
Name=name
Exec=command
Type=Application
(オプション)行X-GNOME-Autostart-enabled=true
は、ランチャーの自動起動機能を有効/無効にすると自動的に追加されます(デフォルトではX-GNOME-Autostart-enabled=true
に設定されています)
必須フィールドの詳細については、 こちら をご覧ください。
コマンドラインからこのようなランチャーを作成するには、スターターの名前とコマンドを引数として実行する小さなスクリプトが必要です。そのようなスクリプトの例を以下に示します。
コマンドで実行した場合:
python3 '/path/to/script' 'Test' 'gedit'
ログイン時にgedit
を実行するスタートアップランチャーを作成します。
ランチャーは[ダッシュ]> [スタートアップアプリケーション]にも表示されます。
#!/usr/bin/env python3
import os
import sys
home = os.environ["HOME"]
name = sys.argv[1]; command = sys.argv[2]
launcher = ["[Desktop Entry]", "Name=", "Exec=", "Type=Application", "X-GNOME-Autostart-enabled=true"]
dr = home+"/.config/autostart/"
if not os.path.exists(dr):
os.makedirs(dr)
file = dr+name.lower()+".desktop"
if not os.path.exists(file):
with open(file, "wt") as out:
for l in launcher:
l = l+name if l == "Name=" else l
l = l+command if l == "Exec=" else l
out.write(l+"\n")
else:
print("file exists, choose another name")
空のファイルに貼り付け、set_startupscript.py
として保存し、次のコマンドで実行します。
python3 /path/to/set_startupscript.py '<name>' '<command>'
~/.config/autostart
に基本的なランチャー(スクリプトを実行する必要はありません)を作成します。~/.config/autostart
に名前のランチャーが既に存在する場合、メッセージを出力します:
file exists, choose another name
答えを見つけました
~/.config/autostart/
に移動します。 autostartという名前のフォルダーがない場合は、mkdir autostartを使用してその名前でフォルダーを作成します。
次に、yourScript.sh.desktop
という名前の次のファイルを追加します
[Desktop Entry]
Type=Application
Exec="/Your/location/to/theScript/yourScript.sh"
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name[en_IN]=AnyNameYouWish
Name=AnyNameYouWish
Comment[en_IN]=AnyComment
Comment=AnyComment
できた!