Jalankan perintah pada login pengguna

23

Di sistem desktop Linux, saya ingin menjalankan perintah ketika pengguna login.

Setelah membaca beberapa posting lain, saya mencoba memasukkan perintah ~/.bashrctetapi tidak berhasil. Selain itu, sistem menggunakan antarmuka grafis untuk login pengguna, sehingga perintah tidak boleh terkait dengan awal shell.

Saya juga mencoba menambahkan perintah ke salah satu skrip yang ada /etc/profile.dtanpa hasil.

Apakah ada cara lain untuk melakukan ini? File apa saja yang dibaca sistem setelah login?

BowPark
sumber
askubuntu.com/questions/48321/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Jawaban:

21

Tidak ada jaminan bahwa manajer tampilan grafis akan membaca file startup klasik. Ini berubah antara distribusi dan antara manajer tampilan. Salah satu dari yang berikut ini harusnya berfungsi.

  1. Gunakan metode asli lingkungan desktop Anda untuk mengatur aplikasi startup. Detailnya akan tergantung pada DE yang Anda gunakan, tetapi Anda dapat membuat skrip yang menjalankan perintah Anda dan menambahkannya ke daftar aplikasi startup. Misalnya, pada sistem saya (Kayu Manis), Anda dapat melakukan ini melalui "Pengaturan Sistem" => "Aplikasi Startup".

  2. Gunakan ~/.xprofile, ini bersumber dari setidaknya manajer login GDM, LDM, LightDM dan LXDM.

  3. Jika tidak satu pun dari pekerjaan di atas, coba tambahkan perintah ke ~/.profile: Ini adalah file inisialisasi utama untuk shell login dan juga dibaca oleh beberapa shell grafis saat login.

  4. Seperti yang ditunjukkan @derobert dalam komentar, Anda juga dapat menggunakan standar desktop gratis :

    Direktori Autostart adalah $ XDG_CONFIG_DIRS / autostart sebagaimana didefinisikan sesuai dengan bagian "Referensi spesifikasi ini" di "spesifikasi direktori basis desktop".

    Jika nama file yang sama terletak di bawah beberapa Direktori Autostart hanya file di bawah direktori yang paling penting yang harus digunakan.

    Contoh: Jika $ XDG_CONFIG_HOME tidak disetel Direktori Autostart di direktori home pengguna adalah ~ / .config / autostart /

    Contoh: Jika $ XDG_CONFIG_DIRS tidak disetel, direktori sistem Autostart adalah / etc / xdg / autostart /

    Contoh: Jika $ XDG_CONFIG_HOME dan $ XDG_CONFIG_DIRS tidak disetel dan kedua file /etc/xdg/autostart/foo.desktop dan ~ / .config / autostart / foo.desktop ada maka hanya file ~ / .config / autostart / foo. desktop akan digunakan karena ~ / .config / autostart / lebih penting daripada / etc / xdg / autostart /

The ~/.bashrcbenar-benar tidak relevan di sini, itu hanya dibaca oleh kerang non-login interaktif, sehingga diabaikan pada kerang login, grafis atau tidak.

terdon
sumber
5
Mungkin ingin disebutkan ~/.config/autostartdan /etc/xdg/autostart/yang merupakan lokasi standar sesuai dengan Spesifikasi Autostart Aplikasi Desktop . Dan juga /etc/X11/Xsession.ddan ~/.xsession.
derobert
6

Pilihan lain adalah menggunakan pam - ini akan memberi Anda cara yang tepat untuk mendefinisikan tindakan saat masuk.

Untuk tindakan umum, Anda dapat mengandalkan pam_exec ( http://manpages.ubuntu.com/manpages/hardy/man8/pam_exec.8.html ). Namun, jika Anda perlu melakukan tindakan yang lebih spesifik dengan cara yang aman, mungkin ada modul pam yang lebih khusus yang akan membuat lebih cocok, seperti pam_mount yang biasa digunakan (untuk mount saat login - http: //manpages.ubuntu. com / manpages / hardy / man8 / pam_mount.8.html ) atau pam_echo (untuk pesan sewenang-wenang kepada pengguna - http://manpages.ubuntu.com/manpages/hardy/man8/pam_echo.8.html ).

Secara umum, pam adalah sistem yang sangat rapi untuk menyesuaikan login, jadi Anda mungkin ingin melihat lebih dalam, daripada mengandalkan skrip yang berpotensi tidak aman, seperti yang disarankan orang lain.

Contoh

Diberikan /etc/pam.d/system-auth yang cukup khas, kita dapat menggunakan pam_exec setelah login seperti ini:

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

di mana /usr/local/bin/my_progprogram sewenang-wenang dijalankan setelah pengguna berhasil masuk.

oakad
sumber
2
Ini adalah jawaban yang baik, meskipun Anda harus menyertakan contoh baris yang akan Anda tambahkan pamkonfigurasi karena ini non-sepele.
Graeme
2

Menurut topik ini: Jalankan perintah secara otomatis setelah login?

Anda memiliki solusi .bashrc(bukan yang Anda butuhkan) dan solusi aplikasi startup. Saya mengutip Daniel S .:

gnome-session-properties dapat digunakan untuk mengkonfigurasi aplikasi startup.

Selain itu, jika Anda ingin aplikasi dijalankan pada boot sistem, Anda dapat menambahkan aturan seperti berikut ke crontab Anda (sunting crontab dengan crontab -e):

@reboot /run/this/program/at/boot >/dev/null 2>&1
Laurent C.
sumber