Bagaimana cara menulis skrip shell yang dijalankan saat login?


16

Saya mencoba menulis skrip bash shell di distro Linux Ubuntu 11.10, yang akan dijalankan secara otomatis saat masuk ke sistem. Tetapi saya tidak dapat menemukan bahwa apa yang harus ditulis dalam skrip yang akan dieksekusi secara otomatis saat masuk.

Jawaban:


18

Jika Anda ingin menjadi global, modifikasi

 /etc/profile 

atau tambahkan skrip ke

 /etc/profile.d

Jika Anda menginginkannya khusus pengguna, ubah

 /home/$USER/.profile

1
Jangan lupa bahwa ekstensi itu seharusnya .shjika Anda memasukkan skrip ke dalamnya /etc/profile.d/. chmode +x /etc/profile.d/myscript.shtentu saja juga.
Brian Haak

Peregangan Raspbian. Mencoba menjalankan /usr/local/bin/pihole -cperintah pada autologin pengguna tertentu. Menambahkan baris ini ke /home/$USER/.profile- tidak ada yang terjadi. Ketika saya menambahkan skrip untuk /etc/profile.dkemudian berfungsi, tapi itu global dan menjalankannya bahkan ketika saya membuka sesi ssh (yang bukan yang saya inginkan). Menambahkan .bashrcberfungsi juga, tetapi berjalan setiap saat saya membuka shell baru (yang tidak saya inginkan). Pertanyaan: Mengapa menambah /home/$USER/.profiletidak berhasil ???
Drew

3

Cukup tambahkan skrip bash ke aplikasi Startup.

Di bidang perintah, masukkan

bash /full/path/to/bash/script.sh/

2
Bagaimana Anda menambahkan "bash /.../script.sh" ke aplikasi Startup dari baris perintah?
aleb

1
OP tidak pernah menyebut GUI; bagaimana jika mereka berada di server jauh melalui SSH dan tidak memiliki GUI? Tidak ada tag desktop yang diterapkan pada pertanyaan ...
Doktor J

Judul secara khusus menyebutkan saat masuk dan tidak tentang GUI desktop.
RichieHH

0

Jika Anda ingin lebih spesifik dengan bash, Anda juga dapat menulis kode Anda di ~ / .bash_profile atau ~ / .bash_login.

Dan Anda dapat sumber skrip apa pun di dalamnya misalnya:

if [ -f ~/.bashrc ]; then
   source ~/.bashrc
fi

0

/etc/profileatau $HOME/.profileatau$HOME/.bash_profile

Saya akan sangat menyarankan untuk tidak menggunakan /etc/profile.d/yourscript.shjika menghasilkan output. Ketika Anda menggunakan sesi non-interaktif, Anda akan menerima $TERM is not setpesan. Ini terlihat ketika menggunakan protokol ssh, seperti scp. Namun, biasanya bukan masalah besar, Veeam tidak menyukainya dan akan memberikan peringatan. Saya tahu Veeam bukan topik di sini, tetapi perlu disebutkan bahwa tidak semua aplikasi anggun mengabaikan $TERM is not setperingatan.

Singkatnya, jika skrip menghasilkan output, letakkan di lokasi yang ditentukan pada baris pertama. Namun, jika Anda memodifikasi lingkungan dan skrip Anda tidak menghasilkan output, maka gunakan yang terakhir.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.