ユーザーログオン時にコマンドを実行する


23

Linuxデスクトップシステムでは、ユーザーがログインしたときにコマンドを実行します。

他の投稿を読んだ後、コマンドを挿入しようとしました~/.bashrcが、失敗しました。さらに、システムはユーザーログインにグラフィックインターフェイスを使用するため、コマンドはシェルの起動に関連してはいけません。

また、含まれ/etc/profile.dているスクリプトの1つにコマンドを追加しようとしましたが、結果はありませんでした。

これを行う別の方法はありますか?ログイン後にシステムが読み取るファイルはありますか?


回答:


21

グラフィカルディスプレイマネージャーがクラシックスタートアップファイルを読み取るという保証はありません。これは、ディストリビューション間およびディスプレイマネージャー間で変更されます。ただし、次のいずれかが機能するはずです。

  1. デスクトップ環境のネイティブメソッドを使用して、スタートアップアプリケーションを設定します。詳細は使用しているDEによって異なりますが、コマンドを実行するスクリプトを作成して、スタートアップアプリケーションのリストに追加できます。たとえば、私のシステム(Cinnamon)では、[システム設定] => [スタートアップアプリケーション]を使用してこれを実行できます。

  2. を使用します~/.xprofileこれは、少なくともGDM、LDM、LightDM、およびLXDMログインマネージャーによって提供されます。

  3. 上記のどちらも機能しない場合は、次のコマンドを追加してみてください~/.profile。これはログインシェルのメイン初期化ファイルであり、ログイン時にいくつかのグラフィカルシェルによって読み取られます。

  4. @derobertがコメントで指摘したように、無料のデスクトップ標準も使用できます

    自動開始ディレクトリは、「デスクトップベースディレクトリ仕様」の「この仕様を参照する」セクションに従って定義されている$ XDG_CONFIG_DIRS / autostartです。

    同じファイル名が複数の自動起動ディレクトリの下にある場合、最も重要なディレクトリの下のファイルのみを使用する必要があります。

    例:$ XDG_CONFIG_HOMEが設定されていない場合、ユーザーのホームディレクトリの自動起動ディレクトリは〜/ .config / autostart /です。

    例:$ XDG_CONFIG_DIRSが設定されていない場合、システム全体の自動起動ディレクトリは/ etc / xdg / autostart /になります

    例:$ XDG_CONFIG_HOMEと$ XDG_CONFIG_DIRSが設定されておらず、2つのファイル/etc/xdg/autostart/foo.desktopと〜/ .config / autostart / foo.desktopが存在する場合、ファイル〜/ .config / autostart / fooのみが存在します。 〜/ .config / autostart /は/ etc / xdg / autostart /よりも重要であるため、デスクトップが使用されます。

これ~/.bashrcはここでは完全に無関係です。対話型の非ログインシェルによってのみ読み取られるため、グラフィカルであるかどうかにかかわらず、ログインシェルでは無視されます。


5
言及~/.config/autostartしたいかもしれ/etc/xdg/autostart/ませんが、これはデスクトップアプリケーション自動起動仕様による標準の場所です。そしてまた/etc/X11/Xsession.dして~/.xsession
デロバート14年

6

別のオプションはpamを使用することです-これにより、ログイン時のアクションを正確に定義できます。

一般的なアクションについては、pam_exec(http://manpages.ubuntu.com/manpages/hardy/man8/pam_exec.8.html)に依存できます。ただし、より具体的なアクションを安全に実行する必要がある場合、一般的に使用されるpam_mount(ログインマウント用-http://manpages.ubuntuなど)など、より適切な特殊なpamモジュールが存在する場合があります。 COM / manページ/ハーディー/ MAN8 / pam_mount.8.html)または提供するpam_echo(任意のメッセージのために、ユーザ- http://manpages.ubuntu.com/manpages/hardy/man8/pam_echo.8.html)。

一般に、PAMはログインをカスタマイズするための非常にきちんとしたシステムであるため、他の人が示唆したように、潜在的に安全でないスクリプトに依存するのではなく、もう少し詳しく調べてください。

かなり典型的な/etc/pam.d/system-authを指定すると、ログイン後にpam_execを次のように使用できます。

session         optional        pam_ssh.so
session         required        pam_limits.so
session         required        pam_env.so
session         optional        pam_mktemp.so
session         required        pam_unix.so
session         optional        pam_exec.so /usr/local/bin/my_prog
session         optional        pam_permit.so

/usr/local/bin/my_progユーザーが正常にログインした後に実行される任意のプログラムはどこにありますか。


2
これは良い答えです。ただしpam、これは重要なことなので、構成を追加する行の例を含める必要があります。
グレアム14

2

このトピックによると:ログイン後にコマンドを自動的に実行しますか?

あなたの解決策があります .bashrc(ないあなたが必要なもの)とスタートアップアプリケーションのソリューションを。ダニエルSを引用します。

gnome-session-properties スタートアップアプリケーションの構成に使用できます。

また、システムのブート時にアプリケーションを実行する場合は、次のようなルールをcrontabに追加できます(crontabを編集しますcrontab -e)。

@reboot /run/this/program/at/boot >/dev/null 2>&1
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.