/etc/profile
Özel giriş amacı olduğu için sadece oturum açma kabukları için çağrılır.
Eğer bir komut olan etkileşimli kabuklarda çalıştırmak isterseniz değil kabukları giriş ve kullandığınız bash
, koyun ~/.bashrc
veya /etc/bash.bashrc
.
"Profil" dosyalarının amacı sadece giriş kabukları için çalıştırılması gereken komutları içermektir. Bu dosyalar:
/etc/profile
Bir giriş kabuğu olarak başlatıldığında, tüm Bourne uyumlu mermiler ( bash
ve dahil dash
) tarafından çalıştırılır .
Scriptler içeri /etc/profile.d
.
Bu Bourne tarzı mermiler içindir, ancak kabuğun çalıştırılabilir koduna kodlanmamıştır. Aksine, komutları /etc/profile
onları çağırır. Örneğin, Ubuntu 12.04 sistemimde /etc/profile
şu satırları içerir:
if [ -d /etc/profile.d ]; then
for i in /etc/profile.d/*.sh; do
if [ -r $i ]; then
. $i
fi
done
unset i
fi
.profile
Kullanıcının giriş dizininde, giriş kabuğu olarak başlatıldığında Bourne uyumlu kabuklar tarafından çalıştırılır (geçersiz kılmadıkça aşağıya bakın).
.bash_profile
veya .bash_login
kullanıcının giriş dizininde. Bunlar dışındaki kabuklar tarafından yoksayılır bash
. Fakat .bash_profile
varsa, yerinebash
onu çalıştırır . Eğer yoksa ama varsa, bunun yerine çalıştırılır . .profile
.bash_profile
.bash_login
.profile
(Ancak , açık bir şekilde * arayacak şekilde yazılması için .bash_profile
veya .bash_login
var olduğunda yaygındır .profile
.)
Kabuğa özgü profil dosyalarının yararı , yalnızca o kabuk için geçerli olan komutları veya sözdizimlerini içerebilmeleridir. Örneğin, [[
değerlendirme operatörünü .bash_profile
/ içinde kullanabilirim, .bash_login
ancak kullanırsam .profile
ve sonra kabuğum dash
olarak giriş yaparsam başarısız olur.
"Profil" Dosyaları İçinde Neler Olmalı
"profile" dosyaları giriş başında sadece bir kez çalıştırılması gereken komutları içermelidir. (Bu, aynı zamanda bir oturum açma kabuğu ile başlayan grafiksel girişleri de içerir.) Bir kabuk etkileşimli ise, çalışan kullanıcı muhtemelen oturum açar ve bu nedenle büyük olasılıkla bir atası vardır (bu, onu başlatan veya başlatanı başlatır, veya bunu başlattım, vb.) bu bir giriş kabuğu idi.
Bir komutu yalnızca bir kez çalıştırmak isteyebilirsiniz çünkü:
- Giriş başına birden fazla kez çalıştırmak için hiçbir neden yoktur, bu verimsiz veya
- Giriş başına bir kereden fazla çalıştırmak, istenmeyen bir sonuç üretecektir.
İstenmeyen bir sonucun ortaya çıkacağı ikinci durumun bir örneği olarak, her kullanıcının varsayılan olarak görünen bu satırları göz önünde bulundurun ~/.profile
:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
SSH’nin içeri girdiğini varsayalım, başka bir kabuk koştum (diyelim zsh
), bir noktada geçici olarak geri gitmek istediğinizi bash
ancak çevrenizi tutmak istediğinizi (içeri bash
girerken tekrar koştum zsh
) ve daha sonra mc
da kabuğunu parça gibi çalıştıran bir program çalıştırdığınızı varsayalım. Arayüzünün. Eğer bin
ev klasörüne mevcut olan ve kullanıcı adı james
, senin PATH
en içteki kabuk gibi bir şey:
/home/james/bin:/home/james/bin:/home/james/bin:/home/james/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
Bu verimsiz ve (daha da önemlisi) içeriğini anlamayı zorlaştırıyor PATH
.
Bu, hiçbir şekilde bir felaket değildir. Söyleyebileceğim kadarıyla, her etkileşimli kabuk "profil" dosyalarından kaynaklanırsa , varsayılan yapılandırmada hiçbir şey olmazdı . Bununla birlikte, "profil" dosyalarının amacı giriş başına sadece bir kez çalıştırılacak komutlar içerdiğinden , bir kullanıcı veya yönetici bir profile yalnızca giriş kabuğu başlatırken çalıştırması gereken komutlar ekleyebilir .
Çalıştırılacak Her Etkileşimli Kabuğun Komutlarını Nereye Koymalı?
Kullanıyorsanız bash
, her etkileşimli kabukta çalıştırılacak olan komutlar için dosyalar vardır:
/etc/bash.bashrc
.bashrc
kullanıcının ana dizininde.
Bu en çok kullanılan komutlar için kullanılır.
- sadece koştukları kabuğun çevresini etkiler - çocuk mermileri bile değil veya
- Bu giriş kabuğu olmasa bile çalışması gerekir.
Örneğin, komut satırı sekmesi tamamlama genellikle bash
oturum açma kabuğu olup olmamasına göre etkinleştirilmelidir . Yani bu görünür ~/.bashrc
:
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
. /etc/bash_completion
fi
Orada, 1 ve 2 her ikisi de geçerlidir: bu, bunun içinde çalıştırılan diğer kabuklara taşınmaz ve bash
farklı bir kabukla giriş yapmış olsam bile , sekme tamamlama çalışması gerekir .
Giriş Kabukları ve Etkileşimli Giriş Kabukları için Komutları Nereye Koymalı
bash
Oturum açma kabukları ve etkileşimli kabukları çalıştırmak ve oturum açma kabukları olmayan bir komut kullanıyorsanız ve kullanmak istediğinizde , /etc/bash.bashrc
ya da içine koymak genellikle yeterlidir~/.bashrc
. Bu, varsayılan olarak, çünkü, /etc/profile
ve ~/.profile
bunları açıkça çalıştırın. Örneğin, ~/.profile
var:
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
(Benzer şekilde, /etc/profile
kaynaklar /etc/bash.bashrc
için bash
).
Bu nedenle, hem "profil" hem de "rc" dosyaları etkileşimli bir bash
kabuk başlattığınızda çalışır (bir giriş kabuğu olsun ya da olmasın).
Etkileşimli Olmayan Kabuklarda Çalıştırılacak Komutları Nereye Koymalı?
Muhtemelen etkileşimli olmayan tüm mermilerin çalışması için herhangi bir komut belirtmek istemezsiniz; bir betiğin her çalıştırılışında çalışırlar (betiğin onları çalıştırmak için yapılandırdığınız kabuk tarafından çalıştırılması şartıyla).
Bu önemli ölçüde kırılmaya neden olabilir. Bunu yapacaksanız ve sistemde kullandığınızdan başka bir yönetici hesabı yoksa, bir tane oluşturmak isteyebilirsiniz; bu hataları düzeltmeyi kolaylaştırabilir.
İçinde bash
"rc" dosyaları aslında kabuk etkileşimli olsun olmasın çalıştırılır . Ancak, tepede diyorlar ki:
# If not running interactively, don't do anything
[ -z "$PS1" ] && return
Bu nedenle, komut dosyalarını çalıştırmak için çalışanlar gibi etkileşimli olmayan kabuklarda bile otomatik olarak çalışan komutlara ihtiyacınız varsa, komutlarınızı bu satırların önüne ekleyebilirsiniz .
Giriş Kabuğunu Başlatma
Giriş yapmak bir giriş kabuğu başlatır. İsterseniz o, bir giriş kabuğu gibi davranmasına ile başlamak sonra bir kabuk başlatılan -l
bayrak (açılımı l OGIN ). Örneğin:
Bu, başka bir kullanıcı olarak başlatmak istemediğiniz sürece bir giriş kabuğu başlatmanın (giriş yapmadan) en iyi yoludur . Sonra kullan:
sudo -i
için root
( sudo -s
giriş yapmayan, etkileşimli bir kök kabuğu için kullanın)
sudo -u username -i
herhangi bir kullanıcı için
su - username
olmayan için root
kullanıcılar (kullanım dışı bir giriş, etkileşimli kök kabuğu için)su username
Bir nedir başlangıçtaki giriş kabuğu?
Bir ilk giriş kabuğu bir aynıdır giriş kabuğu . Her yerde bu cevap "giriş kabuğu" diyor, "başlangıç giriş kabuğu" diyebilir (bu bölüm dışında, zaten anlam ifade etmeyecekti).
Başlangıçta oturum açma kabuğu teriminin bir nedeni , oturum açma kabuğunun ayrıca oturum açarak yürütülen kabuk olarak hangi programın kullanıldığını belirlemek için farklı bir şekilde kullanılmasıdır. Söylemek için kullanılan giriş kabuğu duygusu :
Daha fazla okuma