Oturum açıldığında yürütülen bir kabuk betiği nasıl yazılır?


16

Ben sisteme girişte otomatik olarak yürütülecek Ubuntu 11.10 Linux dağıtım bash kabuk komut dosyası yazmaya çalışıyorum. Ancak, komut dosyasında ne yazacağını, girişte otomatik olarak yürütüleceğini anlayamıyorum.

Yanıtlar:


18

Küresel olmasını istiyorsanız, değiştirin

 /etc/profile 

veya bir komut dosyası ekleyin

 /etc/profile.d

Kullanıcıya özgü olmasını istiyorsanız, değiştirin

 /home/$USER/.profile

1
.shKomut dosyanızı içine koyarsanız , uzantısının olması gerektiğini unutmayın /etc/profile.d/. chmode +x /etc/profile.d/myscript.shtabii ki.
Brian Haak

Raspbian Streç. /usr/local/bin/pihole -cBelirli bir kullanıcının otomatik oturum açma komutunu çalıştırmaya çalışıyorum . Bu satırı /home/$USER/.profileekledi - hiçbir şey olmuyor. Komut dosyası eklediğimde /etc/profile.dişe yarıyor, ancak küresel ve ssh oturumunu açtığımda bile çalıştırıyor (istediğim şey bu değil). Eklemek de .bashrcişe yarıyor, ancak yeni kabuk açtığımda her zaman çalışır (ki istediğim bu değil). Soru: Neden eklemek /home/$USER/.profileişe yaramaz ???
Drew

3

Bash betiğini Başlangıç ​​uygulamalarına eklemeniz yeterlidir.

Komut alanına şunu girin:

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

2
Komut satırından Başlangıç ​​uygulamalarına "bash /.../script.sh" dosyasını nasıl eklersiniz?
aleb

1
OP hiç bir GUI'den bahsetmedi; Onlar neyi SSH üzerinden uzak sunucuda konum ve yoksa sahip bir GUI? Masaüstü etiketlerinin hiçbiri soruya uygulanmadı ...
Doktor J

Başlıkta özellikle oturum açmada bahsediliyor ve masaüstü GUI'leri hakkında hiçbir şey yok.
RichieHH

0

Eğer bash'a özel olmak istiyorsanız, kodu ~ / .bash_profile veya ~ / .bash_login içine de yazabilirsiniz.

Ve içindeki herhangi bir komut dosyasını kaynak olarak kullanabilirsiniz:

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

0

/etc/profileveya $HOME/.profileveya$HOME/.bash_profile

/etc/profile.d/yourscript.shÇıktı üretiyorsa kullanmaya karşı şiddetle tavsiye ederim . Etkileşimli olmayan bir oturum kullandığınızda bir $TERM is not setileti alırsınız. Scp gibi ssh protokolünü kullanırken bu fark edilir. Bununla birlikte, genellikle büyük bir anlaşma değil, Veeam bundan hoşlanmıyor ve bir uyarı verecek. Veeam'in burada konu olmadığını biliyorum, ancak tüm uygulamaların $TERM is not setuyarıyı nazikçe görmezden gelmeyeceğini belirtmek gerekir .

Kısacası, komut dosyası çıktı üretirse, ilk satırda belirtilen konumlara yerleştirin. Ancak, ortamı değiştiriyorsanız ve komut dosyanız çıktı oluşturmuyorsa, ikincisini kullanın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.