Linux Değişkenleri Kılavuzu. Linux ortam değişkenleri, Ubuntu kabuk değişkenleri ortam değişkenleri

Adlandırılmış ve en az bir, genellikle daha fazla uygulama tarafından kullanılan verileri içeren nesnelere ortam değişkenleri denir. Basit bir ifadeyle, bir ortam değişkeni, adı ve değeri olan bir değişkenden başka bir şey değildir.

Ortam değişkeni değerleri, örneğin sistem üzerinde yürütülebilecek tüm dosyaların konumu veya sistem için yerel ayarlar gibi kullanılacak varsayılan düzenleyici olabilir. Yeni başlayanlar için biraz zor, ancak bir ortam değişkeni, yapılandırma ayarlarını birden çok uygulama ve işlem arasında paylaşmanın harika bir yoludur.

Coreutils paketi env ve printenv programlarını içerir. Şu anda alakalı olan tüm ortam değişkenlerini listelemek için şunu yazmanız yeterlidir:

$ printenv

Bash kabuğunda iki tür ortam değişkeni vardır:

  • Genel Değişkenler
  • Yerel Değişkenler

Genel ortam değişkenleri

Kabuk oturumundan, genel ortam değişkenleri ve kabuğun oluşturduğu alt süreçler görüntülenir.

Öte yandan, yerel değişkenlere yalnızca oluşturulduklarında kabuk tarafından erişilebilir. Bu, global ortam değişkenlerini, üst süreçten bilgi gerektiren ve alt süreçleri oluşturan uygulamalarda kullanışlı hale getirir.

Varsayılan olarak, Linux sistemi bir bash oturumu başlatırken belirli global ortam değişkenlerini ayarlar. Sistem ortamı değişkenleri, onları normal kullanıcı ortamı değişkenlerinden ayırmak için her seferinde tüm büyük harfleri kullanır.

Yerel ortam değişkenleri

Adlarından da anlaşılacağı gibi, yerel ortam değişkenleri yalnızca tanımlandıkları yerel süreçte görüntülenebilmektedir. Yerel ortam değişkenleri hakkında kafanız karışmasın, bunlar küresel ortam değişkenleri kadar önemlidir. Aslında, Linux sistemi varsayılan olarak sizin için standart yerel ortam değişkenlerini de tanımlayacaktır. Yerel ortam değişkenlerinin listesini görmeye çalışırken zorlaşıyor. Maalesef bizim için sadece yerel ortam değişkenlerini gösterecek bir komut yok. Belirli bir işlem için ayarlanan tüm ortam değişkenlerini görüntüleyen bir komut vardır. Bunun global ortam değişkenlerini de içerdiğini unutmayın.

Ortam değişkenlerini ayarlama

Kendi ortam değişkenlerinizi doğrudan bash kabuğundan oluşturabilirsiniz. Sonraki bölümde, kendi ortam değişkenlerinizi nasıl oluşturacağınızı ve bunlara etkileşimli kabuk veya kabuk programınızdan nasıl başvuracağınızı göstereceğiz.

Yerel ortam değişkenlerini ayarlama

Bash kabuğu başladığında (veya bir kabuk betiği göründüğünde), kabuk işleminizde görünen yerel değişkenler oluşturmanıza izin verilir. Değişkenin değerine atanan eşittir işaretini kullanarak bir dizeye veya sayısal değişkene bir ortam değişkeni atayabilirsiniz:

$ andreyex_test = test $ echo $ andreyex_test test $

Tebrikler, az önce ilk değişkeninizi yarattınız. Herhangi bir zamanda andreyex_test ortam değişkeninin değerine başvurmanız gerektiğini unutmayın, yalnızca $ andreyex_test adıyla başvuruda bulunun.

Boşluk içeren bir değer dizisi atamanız gerekiyorsa, dizenin başlangıcını ve sonunu belirtmek için tek bir tırnak işareti kullanmanız gerekecektir:

$ andreyex_test = uzun bir diziyi test ediyor -bash: a: komut bulunamadı $ andreyex_test = "uzun bir diziyi test ediyor" $ echo $ andreyex_test uzun bir diziyi test ediyor

Tek tırnak işaretleri olmadan bırakıldığında, bash sonraki karakterin işlenecek başka bir komut olduğunu varsayar.

Tanımladığımız yerel ortam değişkeni için küçük harf kullandığımızı, şimdiye kadar gördüğümüz sistem ortam değişkenlerinin tamamını büyük harf kullandığını unutmayın.

Bash kabuğunda bu standart kuraldır. Yeni ortam değişkenleri ayarlıyorsanız bu gerekli değildir, ancak küçük harfler kullanmanız önerilir. Bu, kişisel ortam değişkenlerinizi sistem ortamı değişkenlerinin sonuçlarından ayırt etmenize yardımcı olur.

NOT. Ortam değişkeni adı, eşittir işareti ve değer arasında boşluk olmaması çok önemlidir. Atamaya boşluk koyarsanız, bash kabuğu değeri ayrı bir komut olarak yorumlar:

$ andreyex_test2 = test -bash: andreyex_test2: komut bulunamadı $

Kabuk işleminizde bir dizi yerel ortam değişkeni, kabuk işleminizin herhangi bir yerinde kullanım için mevcut olacaktır. Ancak başka bir kabuk oluşturursanız, alt kabukta kullanılamaz:

$ bash $ echo $ andreyex_test $ çıkış çıkış $ echo $ andreyex_test uzun bir diziyi test ediyor $

Bu durumda, bir çocuk kabuğu başlattık. Fark edebileceğiniz gibi, isreyex_test ortam değişkeni alt kabukta mevcut değil (boş bir değer içeriyor). Alt kabuktan ayrılıp orijinal kabuğa döndükten sonra yerel ortam değişkeni hala kullanılabilir durumdaydı.

Benzer şekilde, alt süreçten ayrıldıktan sonra bir alt süreçte yerel bir ortam değişkeni ayarlarsanız, yerel ortam değişkeni artık kullanılamaz:

$ bash $ andreyex_test = test etme $ echo $ andreyex_test test etme $ çıkış çıkış $ echo $ andreyex_test $

Alt kabukta ayarlanan isreyex_test ortam değişkeni, ana kabuğa geri döndüğümüzde mevcut değil.

Global ortam değişkenlerini ayarlama

Genel ortam değişkenleri, genel ortam değişkenini belirleyen süreç tarafından oluşturulan tüm alt süreç süreçlerinden görülebilir. Küresel bir ortam değişkeni oluşturmak için kullanılan yöntem, yerel bir ortam değişkeni oluşturmak ve ardından onu küresel ortama aktarmaktır.

Bu, dışa aktarma komutu kullanılarak yapılır:

$ echo $ andreyex_test uzun bir diziyi test ediyor $ dışa aktar andreyex_test $ bash $ echo $ andreyex_test uzun bir diziyi test ediyor $

Yerel ortam değişkeni andreyex_test'te export komutunu kullandıktan sonra yeni bir kabuk işlemi başlattık ve andreyex_test ortam değişkeninin değerine baktık. Bu sefer dışa aktarma komutu, global ortam değişkenini global yaptı, böylece değerini korur.

Yerel bir ortam değişkeninde dışa aktarma komutunu çalıştırdığınızda, değişken adına atıfta bulunmak için dolar işaretini kullanmadığınızı unutmayın.

Ortam değişkenlerini kaldırma

Açıkçası, yeni bir ortam değişkeni oluşturabiliyorsanız, mevcut ortam değişkenini de silebilmeniz mantıklı olacaktır. Bu, unset komutu kullanılarak yapılabilir:

$ echo $ andreyex_test testi $ ayarlanmamış andreyex_test $ echo $ andreyex_test $

Bir unset komutunda bir ortam değişkenine atıfta bulunuyorsanız, dolar işaretini kullanmamaya dikkat edin.

Global ortam değişkenleriyle uğraşırken işler biraz daha karmaşık hale gelir. Bir alt süreçteyseniz ve genel ortam değişkenini devre dışı bırakırsanız, bu yalnızca alt süreç için geçerlidir. Global ortam değişkeni, ana işlemde kullanılabilir durumda kalır:

$ andreyex_test = test $ export andreyex_test $ bash $ echo $ andreyex_test test $ ayarlanmamış andreyex_test $ echo $ andreyex_test $ çıkış çıkış $ echo $ andreyex_test test $

Bu örnekte, grayex_test adlı bir yerel ortam değişkeni ayarlıyoruz, ardından onu global bir ortam değişkeni yapmak için dışa aktarıyoruz. Daha sonra alt kabuk sürecini başlattık ve global ortam değişkeni grayex_test'in hala kullanılabilir olduğundan emin olmak için kontrol edildi. Ardından, hala alt kabuktayken, genel ortam değişkeni andreyex_test'i kaldırmak için unset komutunu kullandık ve ardından alt kabuktan çıktık. Şimdi orijinal ana kabuğa geri dönelim, andreyex_test ortam değişkeninin değerini kontrol ettik ve hala geçerli.

Kabuk varsayılan ortam değişkenleri

Bash kabuğunun sistem ortamını belirlemek için kullandığı belirli ortam değişkenleri vardır. Linux sisteminizde kullanılacak bu değişkenleri her zaman sayabilirsiniz. Bash, orijinal Unix Bourne kabuğunun bir türevi olduğundan, o kabukta orijinal olarak tanımlanan ortam değişkenlerini de içerir.

Aşağıdaki örnekler, bash kabuğu tarafından sağlanan ortam değişkenlerinin orijinal Unix kabuğu Bourne ile uyumlu olduğunu göstermektedir.

Şimdiye kadar bu listedeki en değerli ortam değişkeni PATH ortam değişkenidir.

Bir kabuk komut kabuğuna (komut satırı arayüzü) bir komut girdiğinizde, kabuğun programı bulmak için sistemi araması gerekir. Komut ararken aradığı dizinler PATH ortam değişkeni tarafından belirlenir. Linux'ta PATH ortam değişkeniniz şöyle görünmelidir:

$ echo $ YOL / usr / yerel / sbin: / usr / yerel / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / oyunlar: / usr / yerel / oyunlar: / ek / bin $

Bu durumda, kabuğun komutları aradığı sekiz dizin olduğu gösterilmiştir. Her dizin iki nokta üst üste ile ayrılır ve PATH değişkeninin sonunda dizin listesinin sonu yoktur. Yeni bir dizin ekleyerek ve başka bir iki nokta üst üste ekleyerek PATH'e her zaman ek dizinler ekleyebilirsiniz. PATH ayrıca siparişleri aradığı talebi de gösterir.

Standart Bourne ortam değişkenlerine ek olarak, bash kabuğu ayrıca gösterildiği gibi birkaç değişken sağlar:

Bash Shell Bourne Değişkenleri:

CDPATH: cd komutu için arama yolu olarak kullanılan iki nokta üst üste ayrılmış dizin listesi.
HOME: geçerli kullanıcının ev dizini.
IFS: Metin dizelerini ayırmak için sarmalayıcı tarafından kullanılan alanları ayıran karakterlerin listesi.
MAIL: Geçerli kullanıcının posta kutusu için dosya adı. Bash kabuğu bu dosyada yeni posta olup olmadığını kontrol eder.
MAILPATH: Geçerli kullanıcının posta kutusu için çeşitli dosya adlarının listesi. Bash kabuğu, bu listedeki her dosyayı yeni posta için kontrol eder.
OPTARG: getopts komutu tarafından işlenen son parametre argümanının değeri.
OPTIND: getopts komutu tarafından işlenen son parametre argümanının dizin değeri.
PATH: Kabuğun komutları aradığı, iki nokta üst üste ile ayrılmış bir dizin listesi.
PS1: ana komut satırının komut satırı istemi.
PS2: İkincil Kabuk Komut Satırı Arabirimi istem dizesi.

Kabuk bash ortam değişkenleri:

BASH: geçerli bash kabuğu örneğini yürütmek için tam yol adı.
BASH_ENV: Kurulum sırasında, her bash betiği, başlamadan önce bu değişken tarafından tanımlanan başlangıç ​​dosyasını çalıştırmayı dener.
BASH_VERSION: Geçerli bash kabuğu örneğinin sürüm numarası.
BASH_VERSINFO: Geçerli bash kabuk örneğinin farklı büyük ve küçük sürüm numaralarını içeren bir değişken dizisi.
COLUMNS: Geçerli bash kabuk örneği için kullanılan uçbirim genişliğini içerir.
COMP_CWORD: Geçerli imleç konumunu içeren COMP_WORDS değişkenindeki dizin.
COMP_LINE: geçerli komut satırı.
COMP_POINT: geçerli komutun başlangıcına göre geçerli imleç konumunun dizini.
COMP_WORDS: Geçerli komut satırındaki tek tek sözcükleri içeren bir değişken dizisi.
COMPREPLY: Kabuk işlevi tarafından oluşturulan olası çıkış kodlarını içeren bir değişken dizisi.
DIRSTACK: dizin yığınının mevcut içeriğini içeren bir dizi değişken.
EUID: Geçerli kullanıcının etkin kullanıcı kimliği.
FCEDIT: fc komutu tarafından kullanılan varsayılan düzenleyici.
FIGNORE: Dosya adı tamamlama yapılırken yoksayılacak iki nokta üst üste ayrılmış son ek listesi.
FUNCNAME: Şu anda yürütülmekte olan kabuk işlevinin adı.
GLOBIGNORE: Dosya adını genişletirken yoksayılacak bir dizi dosya adını tanımlayan iki nokta üst üste ayrılmış bir kalıp listesi.
GRUPLAR: geçerli kullanıcının üyesi olduğu grupların listesini içeren değişken bir dizi.
histchars: tarihin genişlemesini kontrol eden üç karaktere kadar.
HISTCMD: geçerli komutun geçmiş numarası.
HISTCONTROL: Kabuk geçmişi listesine hangi komutların girildiğini kontrol eder.
HISTFILE: kabuk geçmişi listesinin kaydedileceği dosya adı (varsayılanı history.bash seçeneğidir).
HISTFILESIZE: Geçmiş dosyasında depolanacak maksimum satır sayısı.
HISTIGNORE: geçmiş dosyası için hangi komutların yok sayılacağını belirlemek için kullanılan iki nokta üst üste ayrılmış kalıplar listesi.
HISTSIZE: geçmiş dosyasında saklanan maksimum komut sayısı.
HOSTFILE: Kabuk ana bilgisayar adını doldurması gerektiğinde okunacak dosyanın adını içerir.
HOSTNAME: mevcut ana bilgisayarın adı.
HOSTTYPE: Bash-shell makine dizisi çalışıyor.
IGNOREEOF: Çıkmadan önce kabuğun alması gereken ardışık EOF karakterlerinin sayısı. Bu değer yoksa, varsayılan olarak bir olur.
INPUTRC: Readline init dosya adı (varsayılan .inputrc'dir).
LANG: Kabuk için yerel ayar kategorisi.
LC_ALL: Yerel ayar kategorisini belirten LANG değişkenini geçersiz kılar.
LC_COLLATE: Dize değerlerini sıralarken kullanılan harmanlamayı ayarlar.
LC_CTYPE: Dosya adı genişletme ve kalıp eşleştirmede kullanılan karakterlerin yorumunu belirler.
LC_MESSAGES: Başında bir dolar işareti bulunan çift tırnaklı dizeleri yorumlarken kullanılan yerel ayarı belirtir.
LC_NUMERIC: Sayıları biçimlendirmek için kullanılan yerel ayarı belirtir.
LINENO: yürütülebilir komut dosyasındaki satır numarası.
HATLAR: Terminalde mevcut olan hat sayısını belirler.
MACHTYPE: sistem türünü işlemci-şirket-sistem biçiminde belirten dize.
MAILCHECK: Kabuğun yeni postayı ne sıklıkla kontrol etmesi gerektiği (varsayılan 60 saniye).
OLDPWD: Kabuk tarafından kullanılan önceki çalışma dizini.
OPTERR: 1 olarak ayarlanırsa, bash, getopts komutu tarafından oluşturulan hataları görüntüler.
OSTYPE: Kabuğun üzerinde çalıştığı işletim sistemini tanımlayan bir dize.
PIPESTATUS: Ön plan işlem süreçlerinden çıkış durum değerlerinin bir listesini içeren değişken bir dizi.
POSIXLY_CORRECT: Ayarlanırsa, bash POSIX modunda başlar.
PPID: Üst bash kabuk işleminin İşlem Kimliği (PID).
PROMPT_COMMAND: Ayarlanmışsa, birincil istemi görüntülemeden önce yürütülecek komut.
PS3: seçme komutunu kullanma istemi.
PS4: bash -x seçeneği kullanılıyorsa komut satırı yankılanmadan önce görüntülenen bilgi istemi.
PWD: geçerli çalışma dizini.
RANDOM: 0 ile 32767 arasında rasgele bir sayı döndürür. Bu değişkene bir değer atamak bir rasgele sayı üreteci üretecektir.
REPLY: Okuma komutu için varsayılan değişken.
SANİYE: Kabuk başladığından beri geçen saniye sayısı. Bir değer atamak, zamanlayıcıyı bir değere sıfırlar.
SHELLOPTS: İzin verilen bash kabuğu seçeneklerinin iki nokta üst üste ayrılmış listesi.
SHLVL: Her yeni bash kabuğu başlatıldığında bir artırılan kabuk düzeyini belirtir.
TIMEFORMAT: Kabuğun zaman değerlerini nasıl görüntülediğini belirleyen bir format.
TMOUT: Seçme ve okuma komutlarının giriş için ne kadar süre (saniye cinsinden) beklemesi gerektiğine ilişkin bir değer. Varsayılan sıfır değeri, süresiz olarak beklemeniz gerektiği anlamına gelir.
UID: Geçerli kullanıcının gerçek kullanıcı kimliği.

set komutunu kullandıktan sonra tüm varsayılan ortam değişkenlerinin görüntülenmediğini fark edebilirsiniz. Bunun bir açıklaması, bunların varsayılan ortam değişkenleri olmasına rağmen hepsinin bir değer içermesi gerekmediği olabilir.

Çıktı

Bu eğitimde, Linux ortam değişkenleri dünyasını ele aldık. Genel ortam değişkenlerine genellikle, tanımlandıkları süreç tarafından oluşturulan herhangi bir alt süreç tarafından erişilir. Yerel ortam değişkenlerine yalnızca tanımlandıkları süreçten erişilebilir.

Linux sistemi, sistem ortamı hakkında bilgi depolamak için her bir global ve yerel ortam değişkenini kullanır. Bu bilgilere kabuk komut satırı arayüzünden olduğu kadar dahili kabuk komut dosyalarından da erişebileceksiniz. Bash kabuğu, orijinal UNO Bourne kabuğunda tanımlanan sistem ortam değişkenlerinin yanı sıra birçok yeni ortam değişkenini kullanır. PATH ortam değişkeni, bash kabuğunun yürütülebilir bir komut bulmak için kabul ettiği arama modelini tanımlar. Kendi dizinlerinizi eklemek için PATH ortam değişkenini veya belki de programlarınızın çalışmasını kolaylaştırmak için mevcut dizin sembolünü değiştirebileceksiniz. Kendi kullanımınız için kendi global ve yerel ortam değişkenlerinizi de oluşturabilirsiniz. Ortam değişkeni oluşturulduktan sonra, tüm kabuk oturumu için kullanılabilir.

Bash kabuğunu başladıktan sonra başlatan birçok başlangıç ​​dosyası vardır. Bu başlangıç ​​dosyaları, her bir bash oturumu için standart ortam değişkenlerini ayarlamak için ortam değişkeni tanımları içerebilir. Linux'ta oturum açtıktan sonra bash, / etc / profil başlangıç ​​dosyasına ve ayrıca her kullanıcı için $ HOME / .bash, $ HOME / .bash oturum açma ve $ HOME / .profile olmak üzere üç yerel başlatma dosyasına erişir.

Kullanıcılar, bu dosyaları kendi kullanımları için ortam değişkenlerini ve başlangıç ​​komut dosyalarını içerecek şekilde özelleştireceklerdir. Bash kabuğu ayrıca ortam değişkeni dizileri sağlar. Bu ortam değişkenleri, bir değişkende birden çok değer içerebilir. İndeks değerini belirterek tek tek veya genel olarak ortam değişkeni dizisinin tam adını belirterek değerlere erişebileceksiniz. Son olarak, bu eğitimde komut takma adlarının kullanımından bahsetmeliyiz. Ortam değişkenleri olmasa da, komut takma adları neredeyse ortam değişkenleri gibi davranır. Bir komut için parametreleriyle birlikte bir takma ad tanımlamanıza izin verir. Çok uzun bir komut ve parametreler girmek zorunda kalmak yerine, buna basit bir takma ad verebilir ve takma adı istediğiniz zaman kabuk oturumunuzda kullanabilirsiniz.

Linux ortam değişkenleri, kabuk değişkenleriyle birlikte, bir kullanıcı oturumu içindeki ayarları tanımlayan şeydir.

Otomatik olarak yüklenirler, ancak geçersiz kılınabilirler. Sisteme her giriş yaptığınızda ortam oluşturulur.

Linux ortam değişkenleri, kabuk değişkenleri

Ortam Değişkenleri kullanıcı kabuğu işlemi ve bunun içinde oluşturulan tüm alt işlemler için kullanılır.

Kabuk değişkenleri geçerli oturumun durumunu belirleyen verileri içerir. Örneğin, geçerli dizin.

Her oturum hem ortam hem de kabuk değişkenlerini kullanır.

Ortam değişkenlerinin listesi çalıştırılarak görüntülenebilir. printenv veya ortam

……
LC_MEASUREMENT = ru_RU.UTF-8
LESSCLOSE = / usr / bin / lesspipe% s% s
LC_PAPER = ru_RU.UTF-8
LC_MONETARY = ru_RU.UTF-8
LANG = tr_US.UTF-8
……

Fark şu ki printenv belirli bir değişken için verileri görüntülemenize olanak tanır - örneğin:

env'nin avantajı, bir değişkeni belirli bir komuta iletebilmenizdir.

Örneğin:

env SHELL = "/ bin / bash" ls -la / opt

Ortam Değişkenlerini Görüntüle

BASH = / bin / bash
BASHOPTS = checkwinsize: cmdhist: complete_fullquote: expand_aliases: extglob: extquote: force_fignore: histappend: interaktif_comments: progcomp: komut değişkenleri: kaynak yolu
BASH_ALIASES = ()
BASH_ARGC = ()
……

Çıktı şuraya yönlendirilebilir: az gezinmeyi kolaylaştırmak için

Çıktıdaki gereksiz bilgilerden kurtulmak için mevcut ortamı değiştirmemek için bunu yapabilirsiniz.

POSIX modunda, bash ile belirtilen işlevlerin çıktısı alınmayacaktır.

En sık kullanılan değişkenler şunlardır:
  • KABUK- komutları yorumlayan bir sarmalayıcı
  • KULLANICI- kullanıcı
  • özürlü- geçerli dizin
  • TERİM- öykünülen terminal türü

Kabuk komutları, değişkenlerin değerini değiştirmenize izin verir. pwd, geçerli dizini konsola bu şekilde yazdırır.

/ ana sayfa / yönetici

Bu bir PWD kabuk değişkenidir

[e-posta korumalı]: ~ $ set | grep özürlü

ESKİPWD = / tmp
özürlü = / ana sayfa / yönetici

/tmp'ye gidelim ve değerin nasıl değiştiğini görelim

[e-posta korumalı]: ~ $ cd / tmp /

[e-posta korumalı]: / tmp $ küme | grep özürlü

OLDPWD = / ana sayfa / yönetici
özürlü = / tmp

Dizini değiştirdiğinizde, PWD kabuk değişkeninin değerinin basitçe değiştiğini ve aynı zamanda değiştiğini görebilirsiniz. ESKİPWD

Ortam veya sarmalayıcı değişkeni nasıl ayarlanır

Kabuk değişkeni bu şekilde eklenir

SOMEVAR = "Merhaba"

Bir ortam değişkeni değil, bir kabuk değişkeni olduğu için env çıktısında görünmeyecektir.

Adın önüne bir $ işareti ekleyerek içeriği yankı yoluyla görüntüleyebilirsiniz.

Merhaba

Ortama bir değişken eklemek için dışa aktarılmalıdır.

SOMEVAR'ı dışa aktar = "Merhaba"

SOMEVAR = Merhaba

Bundan sonra, değer alt süreçler tarafından devralınır.

tuşuyla aynı dışa aktarma komutuyla bir ortam değişkenini silebilirsiniz. -n

Değer ayarlanmadan kabuktan kaldırıldı

Girişte değişkenlerin otomatik yüklenmesi

Linux sistemleri dosyaları kullanır ~ / .bashrc, ~ / .bash_profile, ~ / .bash_login veya ~ / .profil değişkenleri tanımlamak için Dosyalar oturum açma sırasında okunur, hangisinin kullanıldığı dağıtıma bağlıdır.

Ubuntu / Debain'de bu ~ / .bashrc'dir. Hem ortam değişkenleri hem de kabuk değişkenleri buna eklenir.

İlk okunan / vb / profil... Hangi dosyaların daha sonra hangi sırayla kullanılacağını belirtir ve geçersiz kılınabilir.

Giriş yapılmayan oturumlar için değişkenler /etc/bash.bashrc içinde ayarlanır. Böyle bir oturum, arka planda çalışan komut dosyaları için tipiktir.

Çoğu görev için düzenlemek yeterlidir ~ / .bashrc.

Linux'taki ortam değişkenleri, kabuk tarafından tanımlanan ve çalışma zamanında programlar tarafından kullanılan özel değişkenlerdir. Sistem ve kullanıcı tarafından tanımlanabilirler. Linux sistem ortamı değişkenleri sistem tarafından tanımlanır ve sistem düzeyindeki programlar tarafından kullanılır.

Örneğin, PWD komutu, eski çalışma dizinini tutmak için bir sistem değişkeni kullanır. Kullanıcı ortamı değişkenleri, mevcut kabuk için geçici veya kalıcı olarak kullanıcı tarafından belirlenir. Kabuk değişkenleri ekleme ve kaldırma kavramının tamamı birden çok dosya, komut ve farklı kabuklar etrafında döner.

Daha genel olarak, bir ortam değişkeni üç tipte olabilir:

1. Yerel ortam değişkenleri

Bu değişkenler yalnızca geçerli oturum için tanımlanır. İster uzaktan erişim ister bir terminal öykünücüsü olsun, oturum sona erdikten sonra geri alınamayacak şekilde silineceklerdir. Herhangi bir dosyada saklanmazlar, ancak özel komutlar kullanılarak oluşturulur ve silinirler.

2. Özel kabuk değişkenleri

Linux'taki bu kabuk değişkenleri kullanıcıya özeldir ve yerel bir terminalle her oturum açtıklarında veya uzaktan bağlandıklarında yüklenir. Bu tür değişkenler genellikle yapılandırma dosyalarında saklanır: .bashrc, .bash_profile, .bash_login, .profile veya kullanıcının dizininde bulunan diğer dosyalar.

3. Sistem ortamı değişkenleri

Bu değişkenler tüm kullanıcılar için sistem genelinde mevcuttur. Sistem başlangıcında sistem yapılandırma dosyalarından yüklenirler: / etc / ortam, / etc / profile, /etc/profile.d/ /etc/bash.bashrc.

Linux ortam değişkeni yapılandırma dosyaları

Burada, tüm sistem veya belirli bir kullanıcı için ortam değişkenlerini ayarlamak için kullanılan, yukarıda listelenen çeşitli yapılandırma dosyalarına hızlı bir göz atacağız.

.bashrc

Bu, kullanıcıya özel bir değişken dosyasıdır. Kullanıcı her terminal oturumu oluşturduğunda, yani yeni bir terminal açtığında yüklenir. Bu dosyada oluşturulan tüm ortam değişkenleri, her yeni terminal oturumu başlatıldığında etkinleşir.

.bash_profile

Bu değişkenler, kullanıcı SSH aracılığıyla her uzaktan bağlandığında etkili olur. Bu dosya eksikse, sistem .bash_login veya .profile'ı arar.

/ vb / çevre

Bu dosya, sistem düzeyinde herhangi bir ortam değişkeni oluşturmak, düzenlemek ve silmek içindir. Bu dosyada oluşturulan ortam değişkenleri, tüm sistem için, her kullanıcı için ve hatta uzaktan bağlanıldığında bile kullanılabilir.

/etc/bash.bashrc

Sistem bashrc'si. Bu dosya, her kullanıcı için yeni bir terminal oturumu oluşturduğunda yürütülür. Bu, yalnızca yerel kullanıcılar için çalışır, İnternet üzerinden bağlanıldığında bu tür değişkenler görünmez.

/ vb / profil

Sistem dosyası profili. Bu dosyadaki tüm değişkenler, sistemdeki herhangi bir kullanıcı tarafından yalnızca uzaktan oturum açmışsa kullanılabilir. Ancak yerel bir terminal oturumu oluştururken, yani yalnızca bir terminal açarsanız, bunlar kullanılamaz.

Bu dosyalar kullanılarak oluşturulan tüm Linux ortam değişkenleri, basitçe oradan silinerek kaldırılabilir. Yalnızca her değişiklikten sonra oturumu kapatıp oturum açmanız veya şu komutu çalıştırmanız gerekir:

kaynak dosya adı

Linux'ta Kullanıcı ve Sistem Ortamı Değişkenleri Ekleme

Artık biraz teori bildiğinize göre, uygulamaya geçelim. Linux'ta yerel ortam değişkenleri aşağıdaki komutlarla oluşturulabilir:

var = değer
$ ihracat var = değer

Bu değişkenler yalnızca mevcut terminal oturumu için kullanılabilir olacaktır.

Ortam değişkenlerini kaldırmak için birkaç komut kullanılabilir:

1. env'yi kullanma

Varsayılan olarak env, ayarlanan tüm ortam değişkenlerini görüntülemek için kullanılabilir. Ancak -i seçeneği ile tüm kabuk değişkenlerini geçici olarak kaldırmanıza ve komutu değişkenler olmadan yürütmenize izin verir.

env –i komutu

Var, bu komuta iletmek istediğiniz herhangi bir değişkendir.

Bunun gibi bir komut, kabuğu herhangi bir ortam değişkeni olmadan başlatır:

Böyle bir ortamı başlattıktan sonra hiçbir değişken mevcut olmayacak, ancak çıktıktan sonra her şey yerine dönecek.

2. Unset'i kullanma

Bu, Linux ortam değişkenlerini kaldırmanın başka bir yoludur. Unset, geçerli oturumun sonuna kadar değişkeni adıyla kaldırır:

değişken_adı ayarını kaldır

3. Değişkenin değerini "" olarak ayarlayın

Bu, Linux'ta ortam değişkenlerini kaldırmanın en kolay yoludur, bir değişkeni boş bir değere ayarlayarak mevcut oturumun sonuna kadar kaldırırsınız.

Not: Bu yöntemleri kullanarak sistem veya kullanıcı değişkenlerinin değerlerini değiştirebilirsiniz ancak bunlar sadece o anki oturum ile alakalı olacaktır.

Kullanıcı ve sistem ortamı değişkenleri oluşturma

Bu bölümde, sistem ve kullanıcı değişkenlerinin yalnızca geçerli oturum için değil, aynı zamanda yeniden başlatma sonrasında da etkinin devam etmesi için nasıl ayarlanıp kaldırılacağına bakacağız.

1. Linux'ta yerel değişkenleri kurun ve kaldırın

Yerel bir VAR değişkeni oluşturalım ve onu herhangi bir değere ayarlayalım, ardından ayarını kaldıralım ve kaldırıldığından emin olalım:

VAR1 = "Kayıp"
$ yankı $ VAR1
$ VAR1 ayarını kaldır
$ yankı $ VAR1

Değişken oluşturmanın başka bir yolu da dışa aktarma komutudur. Boş bir değer atayarak kaldıralım:

VAR'ı dışa aktar = "Kayıp"
$ yankı $ VAR
$ VAR =
$ yankı $ VAR

Şimdi bir VAR2 değişkeni oluşturalım ve ona bir değer verelim. Ardından env -i komutunu yürüterek tüm yerel değişkenleri geçici olarak kaldırın. Shell'i herhangi bir değişken olmadan başlatacaktır. Çıkışa girdikten sonra tüm değişkenler geri yüklenecektir.

VAR2 = "Kayıp"
$ yankı $ VAR2
$ env -i bash
$ yankı $ VAR2

Özel Değişkenleri Ayarlama ve Kaldırma

İstenen değişkeni dışa aktarmak için dışa aktarma komutunu ekleyerek ana dizininizdeki .bashrc dosyasını düzenleyin. Ardından değişiklikleri uygulamak için kaynak komutunu çalıştırın. Örneğin bir CD değişkeni oluşturalım:

Bunun gibi bir satır ekleyin (o, ardından yapıştırın, ardından Esc ve: wq):

dışa aktarma CD'si = "Bu, Kayıp Ev"

Şimdi yapılandırmayı güncellemek için kalır:

kaynak .bashrc
$ yankı $ CD

Bu değişkeni kaldırmak için .bashrc'den kaldırmanız yeterlidir.

Şimdi .bash_profile ile bir ortam değişkeni ekleyelim. Bu değişken, zaten bildiğiniz gibi, yalnızca uzaktan oturum açma için kullanılabilir:

vi .bash_profile

Satırı ekleyin:

export VAR2 = "Bu, Kayıp Evdir"

Değişiklikleri uygulamak ve değişkenin eklenmesini kontrol etmek için bu komutları çalıştırın:

kaynak .bash_profile
$ yankı $ VAR2

Yerel bir terminal oturumu oluşturduğunuz için değişken mevcut değil, şimdi ssh ile bağlanın:

ssh [e-posta korumalı]
$ yankı $ VAR2

Bu ortam değişkenini önceki durumda olduğu gibi dosyadan kaldırarak kaldırabilirsiniz.

Yorum Yap: Bu değişkenler her zaman mevcuttur, ancak tüm kullanıcılar için geçerli değildir.

Sistem Ortamı Değişkenlerini Ayarlama ve Kaldırma

/etc/bash.profile'a ekleyerek, uzak olanlar hariç tüm terminal oturumlarında tüm kullanıcılar için kullanılabilen bir değişken oluşturalım:

vi /etc/bash.profile

export VAR = "Bu, sistem genelinde bir değişkendir"

Sonra güncelliyoruz:

kaynak /etc/bash.bashrc

Artık bu değişken tüm kullanıcılar için tüm terminallerde kullanılabilir:

yankı $ VAR
$ sudo su
$ yankı $ VAR
$ su -
$ yankı $ VAR

Ortam değişkenini bu makineye uzaktan bağlanan tüm kullanıcılar için kullanılabilir hale getirmek istiyorsanız, / etc / profil dosyasını düzenleyin:

export VAR1 = "Bu, yalnızca uzak oturumlar için sistem genelinde bir değişkendir"

Yapılandırmayı güncelleyin ve değişkenin kullanılabilirliğini kontrol edin, yalnızca uzaktan kullanılabilir olacaktır:

kaynak / vb / profil
$ yankı $ VAR1

Hem uzaktan hem de yerel oturumlar için kullanılabilir olması için Linux'ta bir ortam değişkeni eklemeniz gerekiyorsa, onu / etc / ortamına aktarın:

vi / vb / çevre

export VAR12 = "Her yerde müsaitim"

Kontrol ediyoruz:

kaynak / vb / ortam
$ yankı $ VAR12
$ sudo su
$ yankı $ VAR12
$ çıkış
$ ssh yerel ana bilgisayar
$ yankı $ VAR12

Ortam Değişkenleri ( Çevre değişkeni) farklı komut dosyaları ve programlar arasında değişkenlerin ortak değerlerini depolamak için kullanılır. Bu tür değişkenler, örneğin belirli bir terminal kabuğunun çalışma süresi veya bir kullanıcı oturumu süresi için geçici olarak ayarlanabilir veya tüm sistem için genel düzeyde bir ortam değişkeni ayarlayabilirsiniz.

Ortam Değişkenleri

$ ANA SAYFA
Değişken, geçerli kullanıcının ana dizinine giden yolu içerir. $ KULLANICI
Geçerli kullanıcı adı $ PATH
Kabuk tarafından yürütülebilir programları aramak için dizinlerin listesi. $ özürlü
Geçerli çalışma dizininin yolu (veya pwd). Örnek: dir_path = $ (pwd). $ KABUK
Varsayılan yorumlayıcı $ RANDOM
Değişkene her erişildiğinde 0..32767 rasgele bir sayı üretir. $ SANİYE
Saniye cinsinden zaman. kabuğun başlangıcından beri. $? Önceki komutun sonucu. $ HOSTNAME
Bilgisayar adı $ HISTFILE
$ IFS yorumlayıcı geçmişi dosyasının yolu
Komut sınırlayıcıların, parametrelerin, dizi öğelerinin listesi (varsayılan: boşluk, sekme, yeni satır) $ PS1
Tercüman istemi dize şablonu.

Geçici olarak bir ortam değişkeni ayarlama

Oturum süresi için ortam değişkenini ayarlama:

# Yeni süreç için env var_name = değer [komut] # Mevcut kabuk ve tüm alt süreçleri için dışa aktar var_name = değer [komut]

Değişkenin değeri, sistem yeniden başlatılıncaya kadar korunur.

Sabit bir değer ayarlama

Sistem genelindeki ortam değişkenleri / etc / ortam dosyası aracılığıyla ayarlanır:

ÇEVRE = "dev"

~ / .bashrc veya ~ / .bash_profile dosyası aracılığıyla belirli bir kullanıcı için ortam değişkenini ayarlama:

YOL = "$ (YOL): / ev / kullanıcı / bin:"

Dikkat!

~ / .bash_profile dosyası, yorumlayıcı -l anahtarıyla başlatıldığında yürütülür. Yerel olarak oturum açıldığında bu dosya okunamaz!

Ayrıca, değişikliklerin ancak oturum yeniden başlatıldıktan sonra geçerli olacağını da unutmamalısınız!

Bir ortam değişkeninin değerini görüntüleme

Bir ortam değişkeninin değerini görüntülemek için printenv komutu vardır:

Printenv<имя_переменной>

#kabuk, #bash, #çevre

Değişken türleri

Yukarıdaki örneklerden de görebileceğiniz gibi, kabuk değişkenleri genellikle büyük harflerle yazılır. Bash, iki tür değişkenin listesini saklar:

Genel Değişkenler

Global veya ortam değişkenleri tüm kabuklarda mevcuttur. Ortam değişkenlerini göstermek için komutları kullanabilirsiniz. ortam veya printenv... Bu komutlar paketin bir parçası olarak sağlanır sh-utils.

Tipik bir çıktı aşağıda gösterilmiştir:

Franky ~> printenv CC = gcc CDPATH = .: ~: / usr / yerel: / usr: / CFLAGS = -O2 -fomit-frame-pointer COLORTERM = gnome-terminal CXXFLAGS = -O2 -fomit-frame-pointer EKRAN =: 0 ALAN = hq.garrels.be e = TOR = vi FCEDIT = vi FIGNORE = .o: ~ G_BROKEN_FILENAMES = 1 GDK_USE_XFT = 1 GDMSESSION = Varsayılan GNOME_DESKTOP_SESSION_ID = Varsayılan GTK_RC_FILES = / etc / gt.gt2kran: = darkgreen GWMTERM = xterm HISTFILESIZE = 5000 history_control = yoksayılanlar HISTSIZE = 2000 HOME = / nethome / franky HOSTNAME = octarine.hq.garrels.be INPUTRC = / etc / inputrc IRCNAME / Java / Java / j2sdk1.4.0 LANG = tr -US LDFLAGS = s LD_LIBRARY_PATH = / usr / lib / mozilla: / usr / lib / mozilla / eklentiler LESSCHARSET = latin1 LESS = -edfMQ LESSOPEN = | /usr/bin/lesspipe.sh% s LEX = LOCAL_MACHINE = oktarin LOG_NAME = franklory = hayır 00: fi = 00: di = 01; 34: ln = 01; 36: pi = 40; 33: so = 01; 35: bd = 40; 33; 01: cd = 40; 33; 01: veya = 01; 05; 37; 41: mi = 01; 05; 37; 41: ex = 01; 32: *.Cmd = 01; 32: *.Exe = 01; 32: *.com = 01; 32: *.btm = 01; 32: *.bat = 01; 32: *.sh = 01; 32: *.csh = 01; 32: *.tar = 01; 31: *.tgz = 01; 31: *.Arj = 01 ; 31: *.Taz = 01; 31: *.Lzh = 01; 31: *.Zip = 01; 31: *.Z = 01; 31: *.Z = 01; 31: *.Gz = 01; 31 : *.bz2 = 01; 31: *.bz = 01; 31: *.tz = 01; 31: *.rpm = 01; 31: *.cpio = 01; 31: *.jpg = 01; 35: * .gif = 01; 35: *.bmp = 01; 35: *.xbm = 01; 35: *.xpm = 01; 35: *.png = 01; 35: *.tif = 01; 35: MAKİNELER = oktarin MAILCHECK = 60 MAIL = / var / mail / franky MANPATH = / usr / man: / usr / share / man /: / usr / local / man: / usr / X11R6 / man MEAN_MACHINES = oktarin MOZ_DIST_BIN = / usr / lib / mozilla MOZILLA_FIVE_HOME = / usr / lib / mozilla MOZ_PROGRAM = / usr / lib / mozilla / mozilla-bin MTOOLS_FAT_COMPATIBILITY = 1 MYMALLOC = 0 NNTPPORT = 119 NNTPSERVER = haberler NPX_PLUGIN_PATH4 = frank NPX_PLUGIN_PATH4 = usprlugin / daha az nethome / franky / bin.Linux: / nethome / franky / bin: / usr / yerel / bin: / usr / yerel / sbin: / usr / X11R6 / bin: / usr / bin: / usr / sbin: / bin: / sbin :. PS1 = \ [\ 033franky içeride \ w \ [\ 033 PS2 = Daha fazla girdi> PWD = / nethome / franky SESSION_MANAGER = local / octarine.hq.garrels.be: /tmp/.ICE-unix/22106 SHELL = / bin / bash SHELL_LOGIN = - oturum açma SHLVL = 2 SSH_AGENT_PID = 22161 SSH_ASKPASS = / usr / libexec / openssh / gnome-ssh-askpass SSH_AUTH_SOCK = / tmp / ssh-XXmhQ4fC / aracı.22106 TYPNER_ US = ER = USM / bin / printenv GÖRSEL = vi PENCERE = 20971661 XAPPLRESDIR = / nethome / franky / app-defaults XAUTHORITY = / nethome / franky / .Xauthority XENVIRONMENT = / nethome / franky / .XESHESHARDS XFIL / X11R6 / lib / X11 / % L / % T /% N% C% S: / usr / X11R6 / lib / X11 /% l /% T /% N% C% S: / usr / X11R6 / lib / X11 /% T /% N% C% S: / usr / X11R6 / lib / X11 /% L /% T /% N% S: / usr / X11R6 / lib / X11 /% l /% T /% N% S : / usr / X11R6 / lib / X11 /% T /% N% S XKEYSYMDB = / usr / X11R6 / lib / X11 / XKeysymDB [e-posta korumalı]= yok XTERMID = XWINHOME = / usr / X11R6 X = X11R6 YACC = bizon -y

yerel değişkenler

Yerel değişkenler yalnızca geçerli komut kabuğunda kullanılabilir. Yerleşik komut ise Ayarlamak herhangi bir parametre olmadan kullanıldığında, tüm değişkenlerin (çalışma zamanı değişkenleri dahil) ve fonksiyonların bir listesini verecektir. Biçimlendirmeyi kullanalım ve değişkenlerin yerelliğini hesaba katan sıralanmış bir sonuç üretelim.

Komutların çıktısını karşılaştırarak oluşturulan diff dosyası aşağıdadır. printenv ve Ayarlamak, komut tarafından da görüntülenen işlevler listesinden çıkarıldıktan sonra Ayarlamak:

Franky ~> diff set.sorted printenv.sorted | grep"<" | awk "{ print $2 }" BASE=/nethome/franky/.Shell/hq.garrels.be/octarine.aliases BASH=/bin/bash BASH_VERSINFO=(="2" BASH_VERSION="2.05b.0(1)-release" COLUMNS=80 DIRSTACK=() DO_FORTUNE= EUID=504 GROUPS=() HERE=/home/franky HISTFILE=/nethome/franky/.bash_history HOSTTYPE=i686 IFS=$" LINES=24 MACHTYPE=i686-pc-linux-gnu OPTERR=1 OPTIND=1 OSTYPE=linux-gnu PIPESTATUS=(="0") PPID=10099 PS4="+ PWD_REAL="pwd SHELLOPTS=braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor THERE=/home/franky UID=504

Değişkenleri içeriklerine göre bölme

Değişkenleri yerel ve global olarak ayırmanın yanı sıra, değişkende hangi içeriğin depolandığına göre de kategorilere ayırabiliriz. Bu bağlamda değişkenler dört türe ayrılır:

  • dize değişkenleri
  • tamsayı değişkenleri
  • Değişkenler - sabitler
  • Değişkenler - Diziler

Bu tür değişkenleri Bölüm 10'da tartışacağız. Artık değişkenlerimizde tamsayı ve string değerlerini kullanacağız.

Değişkenler Oluşturma

Değişkenler, büyük ve küçük harf karakterleri arasında ayrım yapar ve varsayılan olarak büyük harf karakterleri kullanır. Yerel değişkenleri yazmak için bazen küçük harf kullanmak gelenekseldir. Ancak, değişken adları için herhangi bir karakteri kullanabilir ve hatta büyük ve küçük harfleri karıştırabilirsiniz. Sayıları değişken adlarında da kullanabilirsiniz, ancak sayılarla başlayan adlara izin verilmez:

Komut> 1number dışa aktar = 1 bash: dışa aktar: `1number = 1": geçerli bir tanımlayıcı değil

Komut kabuğunda bir değişken ayarlamak için aşağıdaki komutu kullanın

VARNAME = "değer"

Eşittir işaretinin etrafına boşluk koymayın - bu hatalara yol açar. Değişkenlere değer atadığınızda, dizenin içeriğini alıntılamak iyi bir alışkanlıktır; bu, hata yapma şansınızı azaltır.

Büyük ve küçük harf, sayı ve boşluk kullanımına ilişkin bazı örnekler (komut bulunamadı mesajı bir sorun olduğunu gösterir - yaklaşık):

Franky ~> MYVAR1 = "2" franky ~> echo $ MYVAR1 2 franky ~> first_name = "Franky" franky ~> echo $ first_name Franky franky ~> full_name = "Franky M. Singh" franky ~> echo $ full_name Franky M. Singh Franky ~> MYVAR-2 = "2" bash: MYVAR-2 = 2: komut bulunamadı franky ~> MYVAR1 = "2" bash: MYVAR1: komut bulunamadı franky ~> MYVAR1 = "2" bash: 2: komut bulunamadı franky ~> ayarlanmamış MYVAR1 first_name full_name franky ~> echo $ MYVAR1 $ first_name $ full_name<--no output-->açık yürekli ~>

Değişkenleri Dışa Aktarma

Yukarıdaki örnekte gösterildiği gibi oluşturulan bir değişken sadece mevcut kabukta mevcuttur. Bu yerel bir değişkendir: mevcut kabuğun alt süreçleri bu değişkenin farkında olmayacaktır. Değişkenleri bir alt kabuğa geçirmek için, ihracat yerleşik komutla ihracat... Dışa aktarılan değişkenlere ortam değişkenleri denir. Değer ataması ve dışa aktarma genellikle tek adımda yapılır:

VARNAME = "değer" dışa aktar

Alt kabuk, üst süreçten devralınan değişkenleri değiştirebilir, ancak alt süreç tarafından yapılan değişiklikler üst süreci etkilemez. Bu, aşağıdaki örnekte gösterilmiştir:

Franky ~> full_name = "Franky M. Singh" franky ~> bash franky ~> echo $ full_name franky ~> çıkış franky ~> tam_adı dışa aktar franky ~> bash franky ~> echo $ full_name Franky M. Singh franky ~> tam_adı dışa aktar = "Büyük Charles" franky ~> echo $ full_name Büyük Charles franky ~> çıkış franky ~> echo $ full_name Franky M. Singh franky ~>

Bir alt kabuk full_name değerini ilk kez okumaya çalıştığında, değer ayarlanmaz (komut Eko boş bir satır gösterir). Alt kabuktan çıktıktan sonra, full_name değişkeni üst kabuğa aktarılır - değişken, bir değer atandıktan sonra dışa aktarılabilir. Ardından, ana kabuktan dışa aktarılan değişkenin görünür olacağı yeni bir alt kabuk başlatılır. Değişken değiştirilir ve içinde farklı bir değer depolanır, ancak ana kabukta bu değişkenin değeri aynı kalır.

Ayrılmış değişkenler

Bourne Shell Ayrılmış Değişkenler

Bash, Bourne kabuğu gibi belirli kabuk değişkenlerini kullanır. Bazı durumlarda Bash, bir değişkene varsayılan bir değer atar. Aşağıdaki tablo bu basit kabuk değişkenlerini özetlemektedir:

Tablo 3.1. Bourne Shell Ayrılmış Değişkenler

Değişken ismi Tanım

Yerleşik komut tarafından yol aramada kullanılan iki nokta üst üste ayrılmış dizin listesi CD.

Geçerli kullanıcının ev dizini; yerleşik komutta varsayılan olarak kullanılır CD... Bu değişkenin değeri de yaklaşık işareti yerine kullanılır.

Alanları ayırmak için kullanılan karakterlerin listesi; kabuk, tüm ikameler gerçekleştirildikten sonra sonucu ayrı kelimelere böldüğünde kullanılır.

Bu parametrede bir dosya adı belirtilirse ve MAILPATH değişkeninin değeri ayarlanmadıysa, Bash kullanıcıya belirtilen dosyada bir posta alındığını bildirir.

Kabuğun yeni posta olup olmadığını düzenli olarak kontrol ettiği, iki nokta üst üste ayrılmış dosya adları listesi.

Yerleşik komut tarafından işlenen parametredeki son argümanın değeri getopts.

Yerleşik komut tarafından işlenen son parametre bağımsız değişkeninin dizini getopts.

Kabuğun komutları aradığı, iki nokta üst üste ayrılmış dizin listesi.

Birincil bilgi istemi dizesi. Varsayılan "" \ s- \ v \ $ "" şeklindedir.

İkincil bilgi istemi dizesi. Varsayılan ""> "" şeklindedir.

Bash ayrılmış değişkenler

Bu değişkenlerin değerleri Bash'te ayarlanır veya kullanılır, ancak genellikle diğer kabuklarda özel olarak değerlendirilmez.

Tablo 3.2. Bash ayrılmış değişkenler

Değişken ismi Tanım

Bu değişken, kabuğun kullanıcı ile nasıl etkileşime girdiğini ve görevleri nasıl gerçekleştirdiğini kontrol eder.

Tam yol, geçerli Bash örneğini başlatmak için kullanılır.

Bash, betiği çalıştırmak için çağrıldığında bu değişken ayarlanırsa, değeri, betiği çalıştırmadan önce okunacak başlangıç ​​dosyasının adı olarak kullanılır.

Geçerli Bash örneğinin sürüm numarası.

Değişken - Dizi öğeleri, belirli bir Bash örneğinin sürümüyle ilgili bilgileri depolayan salt okunur bir dizi.

Seçilen listeleri yazdırırken, yerleşik komut tarafından kullanılır Seçme terminalin genişliğini belirlemek için. Bir sinyal alırken otomatik olarak ayarlanır SIGWINCH.

Geçerli imleç konumunu saklayan sözcük için $ (COMP_WORDS) işaretçisi.

Geçerli komut satırı.

Geçerli komutun başlangıcına göre imlecin geçerli konumunu gösteren bir işaretçi.

Değişken, geçerli komut satırında kullanılan tek tek sözcükler dizisidir.

Değişken, sonlandırmaları programlamak için tasarlanmış bir hizmet tarafından çağrılan bir kabuk işlevi tarafından oluşturulan olası satır sonlandırmalarını Bash'in okuduğu bir dizidir.

Değişken, dizin yığınının mevcut durumunu saklayan bir dizidir.

Sayısal Etkili Kullanıcı Kimliği Geçerli kullanıcının kimliği.

Bir satır içi komuttayken varsayılan düzenleyici fc-e parametresini belirtir

Otomatik dosya adı tamamlama işlemi yapılırken göz ardı edilmesi gereken iki nokta üst üste ayrılmış son ek listesi.

Şu anda yürütülmekte olan kabuk işlevinin adı.

Dosya adları değiştirilirken yoksayılacak dosya adları kümesini belirten, iki nokta üst üste ayrılmış bir kalıp listesi.

Değişken, geçerli kullanıcının ait olduğu grupların listesini içeren bir dizidir.

Komut geçmişi değiştirme, hızlı değiştirme ve yapılan değiştirmelerin belirteçleştirmesini kontrol etmek için üç karaktere kadar.

Komut geçmişindeki geçerli komutun numarası veya komut geçmişi listesindeki işaretçisi.

Komutun komut geçmişi dosyasına eklenip eklenmediğini belirler.

Komut geçmişinin kaydedildiği dosyanın adı. Varsayılan değer: ~ / .bash_history.

Bir komut geçmişi dosyasındaki varsayılan maksimum satır sayısı 500'dür.

Bir komutun komut geçmişi listelerine kaydedilmesi gerekip gerekmediğini belirlemek için kullanılan iki nokta üst üste ayrılmış kalıplar listesi.

Komut geçmişi listesinde hafızaya alınabilecek maksimum komut sayısı varsayılan olarak 500'dür.

/etc/hosts dosyasıyla aynı biçimde bir dosya adı içerir ve kabuğun bir ana bilgisayar adını tamamlaması gerektiğinde okunabilir.

Geçerli ana bilgisayarın adı.

Bash'in çalıştığı makineyi açıklayan bir dize.

Giriş akışında sonlandırma karakteri olarak bir karakter aldığında kabuğun ne yapacağını kontrol eder. EOF(dosya sonu karakteri).

Varsayılan / etc / inputrc dosyasının yerini alan Readline başlatma dosyasının adı.

Adları LC_ karakterleriyle başlayan değişkenler kullanılarak açıkça ayarlanmayan tüm kategoriler için yerel ayarı tanımlamak için kullanılır.

Bu değişken, LANG değişkeninin değerini ve yerelleştirme kategorisini belirleyen LC_ ile başlayan tüm diğer değişkenleri geçersiz kılar.

Bu değişken, joker karakter dosya adlarını sıralarken kullanılan sıralama düzenini belirtir ve dosya adı genişletme ve kalıp eşleştirme için aralıkların, eşleşme sınıflarının ve karakter karşılaştırma kurallarının yorumunu belirler.

Bu değişken, dosya adı genişletme ve kalıp eşleştirme için karakterlerin yorumunu ve karakter sınıfını belirler.

Bu değişken, başında $ karakteri olan çift tırnaklı dizeleri işlemek için kullanılan yerelleştirme kategorisini belirtir.

Bu değişken, sayı biçimi için yerelleştirme kategorisini tanımlar.

Şu anda yürütülmekte olan komut dosyası veya kabuk işlevindeki satır numarası.

Yerleşik komut tarafından kullanılır Seçme seçilen listelerin görüntülendiği sütunun uzunluğunu belirlemek için.

GNU CPU-COMPANY-SYSTEM standart biçimini kullanarak, Bash'in üzerinde çalıştığı sistem türünü tam olarak tanımlayan bir dize.

Kabuğun MAILPATH veya MAIL değişkenlerinde belirtilen dosyalarda postaları ne sıklıkta kontrol etmesi gerektiğini (saniye cinsinden) belirler.

Yerleşik komutla ayarlanan önceki çalışma dizini CD.

1 olarak ayarlanırsa, Bash yerleşik komut tarafından oluşturulan hata mesajlarını görüntüler. getopts.

Bash'in üzerinde çalıştığı işletim sistemini açıklayan bir dize.

Değişken, son işlem hattındaki (bir komuttan oluşabilen) işlemlerin çıkış durumlarının değerlerinin listesini içeren bir dizidir.

Bash başlatıldığında bu değişken ortama eklenirse, kabuk POSIX moduna girer.

Bu değişken ayarlanırsa, değer, birincil bilgi istemi satırının (PS1) her çıkışından önce yürütülen bir komut olarak yorumlanır.

Bu değişkenin değeri komut için kullanılır Seçme komut satırı olarak. Varsayılan - ""#? ""

-x seçeneği komut satırını yansıtacak şekilde ayarlandığında komut satırından önce yazdırılan bilgi istemi dizesi değeri; varsayılan "+" dır.

Yerleşik komut tarafından ayarlanan geçerli çalışma dizini CD.

Bu parametreye her erişildiğinde 0 ile 32767 arasında rastgele bir tam sayı üretilir.Bu değişkenin değeri rastgele sayı üreteçlerinde kullanılır.

Yerleşik komutta varsayılan olarak kullanılan değişken okuman.

Bu değişken, kabuğun başlatılmasından bu yana geçen saniye sayısını belirtir.

Komut kabuğunda ayarlanan parametrelerin listesi; iki nokta üst üste ile ayrılmıştır.

Her yeni Bash örneği başlatıldığında birer birer artışlar.

Bu parametrenin değeri, ayrılmış bir sözcükten önce gelen ardışık düzenlerin yürütme süresi hakkında bilgi çıktısı alma biçimini belirten bir dize olarak kullanılır. zaman.

TMOUT sıfırdan büyük bir değere ayarlanırsa, yerleşik komutta varsayılan zaman aşımı olarak kabul edilir. okuman... Kabuk etkileşimli modda başlatıldığında, bu değer, kabuğun birincil istemi yayınladıktan sonra giriş için bekleyeceği saniye sayısı olarak yorumlanır. Herhangi bir girdi alınmazsa, bu süreden sonra Bash çıkar.

Mevcut kullanıcı için sayısal değer, gerçek kullanıcı kimliği.

Daha fazla bilgi için Bash kılavuz sayfalarına veya belgelerine bakın. Bazı değişkenler salt okunurdur, bazıları otomatik olarak ayarlanır ve bazıları varsayılandan farklı bir değere ayarlandığında anlamlarını kaybeder.

Özel parametreler

Kabuk, bazı parametreleri özel bir şekilde ele alır. Bu parametreler sadece onlardan değer almak için kullanılabilir, onlara değer atayamazsınız.

Tablo 3.3. Bash özel değişkenleri

sembol Tanım

İlkinden başlayarak konumsal parametreleri döndürür. Bir parametre çift tırnak içinde belirtildiğinde, özel değişken IFS'nin ilk karakteriyle ayrılmış, her parametrenin değerlerini içeren tek bir kelime ile değiştirilir.

İlkinden başlayarak konumsal parametreleri döndürür. Bir parametre çift tırnak içinde belirtildiğinde, her parametre ayrı bir kelime ile döndürülür.

Ondalık değer olarak belirtilen konumsal parametrelerin sayısını döndürür.

Ön plan modunda yürütülen son işlem hattının dönüş kodunu döndürür.

Tire parametresi, yerleşik çağrıldığında ayarlandığı gibi geçerli parametrenin bayraklarını döndürür Ayarlamak veya kabuğun kendisi tarafından yüklenme biçimleri (örneğin, -i).

Kabuğun işlem kimliğini döndürür.

Arka planda (eşzamansız) modunda yürütülen son komutun işlem kimliğini alır.

Kabuk veya komut dosyasının adını döndürür.

Alt çizgi parametresi, kabuk başlatıldığında ayarlanır ve bağımsız değişken listesinde iletilirken yürütülen kabuğun veya komut dosyasının tam adını içerir. Değer daha sonra önceki komutun son argümanı ile değiştirilecektir. Bu parametre aynı zamanda yürütülen ve o komuta aktarılan ortama yerleştirilen her komutun tam yolunu belirtir. Postayı kontrol ederken, bu parametre posta dosyasının adını içerir.

Konumsal parametreler, bir kabuk betiğinin adını takip eden kelimelerdir. $ 1, $ 2, $ 3 vb. değişkenlerde saklanırlar. Değişkenler, gerektiğinde dahili diziye eklenir. $ # değişkeni, aşağıdaki basit komut dosyasında gösterildiği gibi toplam parametre sayısını belirtir:

# positional.sh # Bu komut dosyası 3 konum parametresini okur ve bunları yazdırır. POSPAR1 = "$ 1" POSPAR2 = "$ 2" POSPAR3 = "$ 3" echo "$ 1, ilk konumsal parametredir, \ $ 1." echo "$ 2, ikinci konumsal parametredir, \ $ 2." echo "$ 3, üçüncü konumsal parametredir, \ $ 3." echo echo "Konum parametrelerinin toplam sayısı $ #."

Komut dosyasını başlatırken istediğiniz sayıda argüman belirtebilirsiniz:

Franky ~> konumsal.sh bir iki üç dört beş bir ilk konumsal parametredir, $ 1. iki, ikinci konumsal parametredir, 2 $. üç, üçüncü konumsal parametredir, 3 $. Konumsal parametrelerin toplam sayısı 5.franky ~> konumsal.sh bir iki bir ilk konumsal parametredir, $ 1'dir. iki, ikinci konumsal parametredir, 2 $. üçüncü konumsal parametre, $ 3'tür. Konumsal parametrelerin toplam sayısı 2'dir.

Bu parametreleri kullanma hakkında daha fazla bilgi için Bölüm 7, "Koşullu İfadeler" ve "Shift yerleşik" bölümüne bakın.

Diğer özel parametrelere bazı örnekler:

Franky ~> grep sözlük / usr / hisse / dict / kelimeler sözlüğü franky ~> yankı $ _ / usr / hisse / dict / kelimeler franky ~> yankı $$ 10662 franky ~> mozilla & 11064 franky ~> yankı $! 11064 franky ~> echo $ 0 bash franky ~> echo $? 0 franky ~> ls donotexist ls: donotexist: Böyle bir dosya veya dizin yok franky ~> echo $? 1 frank ~>

kullanıcı açık sözlü komutu girerek başlar grep, bunun sonucunda _ değişkeninin değeri atanır. Bu kabuğun işlem kimliği 10662'dir. Herhangi bir görevin yürütülmesi arka plana itilirse, değişkende! arka plan işinin işlem kimliğini içerecektir. Çalışan bir komut kabuğu bash... Değişkende bir hata varsa? 0 (sıfır) dışında bir dönüş kodu olacaktır.

Değişkenlerle komut dosyalarının kapsamını genişletme

Değişkenler, komut dosyasını değişkenlerle daha okunabilir hale getirmenin yanı sıra, komut dosyasını farklı koşullarda veya başka amaçlarla hızla uygulamanıza da yardımcı olabilir. Aşağıdaki örneği düşünün - kullanıcının ana dizininin uzak bir sunucuda yedeğini alan çok basit bir komut dosyası açık sözlü:

#! / bin / bash # Bu betik ev dizinimin bir yedeğini alır. cd / home # Bu arşivi oluşturur tar cf /var/tmp/home_franky.tar franky> / dev / null 2> & 1 # Önce eski bzip2 dosyasını kaldırın. Hataları yeniden yönlendirin çünkü bu, # arşivi yoksa bazılarını oluşturur. Ardından yeni bir sıkıştırılmış dosya oluşturun. rm /var/tmp/home_franky.tar.bz2 2> / dev / null bzip2 /var/tmp/home_franky.tar # Dosyayı başka bir ana bilgisayara kopyalayın - bu işlemi müdahale etmeden yapmak için ssh anahtarlarımız var. scp /var/tmp/home_franky.tar.bz2 bordeaux: / opt / backup / franky> / dev / null 2> & 1 # Bir günlük dosyasında bir zaman damgası oluşturun. tarih >> /home/franky/log/home_backup.log yankı yedeklemesi başarılı >> /home/franky/log/home_backup.log

Her şeyden önce, ihtiyaç duyduğunuzda dosya ve dizinleri manuel olarak belirtirseniz hata yapma olasılığınız daha yüksektir. İkinci olarak, kullanıcının açık sözlü bu betiği kullanıcıya iletmek istiyor şarkı sonra önce şarkı ana dizinini yedeklemek için bir komut dosyası kullanabilecek, oldukça fazla düzenleme yapması gerekecek. Aynı şey, kullanıcı açık sözlü diğer dizinleri yedeklemek için bu betiği kullanmak isteyecektir. Kapsamı genişletmek için tüm dosyalar, dizinler, kullanıcı adları, sunucu adları vb. için değişkenler kullanın. Ardından, belirli bir parametrenin gerçekleştiği tüm yerleri bulmak için değeri yalnızca bir kez değiştirmeniz ve tüm komut dosyasını gözden geçirmemeniz gerekir. Örnek:

#! / bin / bash # Bu betik ev dizinimin bir yedeğini alır. # Komut dosyasının işinize yaraması için değişkenlerin değerlerini değiştirin: BACKUPDIR = / home BACKUPFILES = franky TARFILE = / var / tmp / home_franky.tar BZIPFILE = / var / tmp / home_franky.tar.bz2 SERVER = bordeaux UZAKTAN = / opt / backup / franky LOGFILE = / home / franky / log / home_backup.log cd $ BACKUPDIR # Bu arşivi oluşturur tar cf $ TARFILE $ BACKUPFILES> / dev / null 2> & 1 # Önce eski bzip2 dosyasını kaldırın. Hataları yeniden yönlendirin çünkü bu, # arşivi yoksa bazılarını oluşturur. Ardından yeni bir sıkıştırılmış dosya oluşturun. rm $ BZIPFILE 2> / dev / null bzip2 $ TARFILE # Dosyayı başka bir ana bilgisayara kopyalayın - müdahale etmeden bu işi yapmak için ssh anahtarlarımız var. scp $ BZIPFILE $ SERVER: $ REMOTEDIR> / dev / null 2> & 1 # Bir günlük dosyasında bir zaman damgası oluşturun. tarih >> $ LOGFILE yankı yedeklemesi başarılı >> $ LOGFILE

Fok
Konunun devamı:
Bir bilgisayar

Yazılımı nasıl güncellerim? Size yazılımı güncellemenin farklı yollarını sunuyoruz, yani: bir hafıza kartı kullanarak güncelleme veya "...