Linux'ta ortam değişkeni nasıl ayarlanır? Linux'ta Ortam Değişkenleri. Sistem Ortamı Değişkenleri

2.2. Ortam Değişkenleri

İşletim sistemi, adı verilen özel bir tür kaynağı korur. Ortam Değişkenleri (Ortam Değişkenleri). Bu değişkenler bir çift İSİM - DEĞER . Ad bir harfle başlayabilir ve harflerden, rakamlardan ve alt çizgilerden oluşabilir.

Komut satırında bir değişkenin değerini değiştirmek için, değişken adının önüne bir $ işareti konur:

$ yankı $KULLANICI konuk

Değişken ayarlanmamışsa, boş bir dize döndürülür.

Bir değişkenin değerini ayarlamak için bir atama ifadesi kullanılır (Bourne benzeri kabuklar söz konusu olduğunda):

$ TEST = test

veya yerleşik set ifadesi (C-likes durumunda):

$ TEST=testi ayarla

Argümansız set komutu, ortamdaki tüm değişkenlerin değerlerini listeler:

$ set COLUMNS=197 CVS_RSH=ssh DIRSTACK=() EUID=1000 GROUPS=() G_BROKEN_FILENAMES=1 HISTFILE=/home/guest/.bash_history HISTFILESIZE=1000 HISTSIZE=1000 HOME=/home/guest HOSTNAME=myhost HOSTTYPE=i686 IFS =$" \t\n" INPUTRC=/etc/inputrc KDEDIR=/usr KDEDIRS=/home/guest/.local/ KDE_IS_PRELINKED=1 KDE_NO_IPV6=1 LANG=ru_RU.UTF-8 LESSOPEN="|/usr/bin/ lesspipe.sh %s" LINES=65 LOGNAME=misafir ....

Değişkenler, belirli bir işlem için yerel veya bir oturum için genel olabilir. Değişkenler için yerel değerleri, önlerine komutlar koyarak ayarlayabilirsiniz:

$ TEST=test1 sh -c "yankı $TEST" test1

Bourne benzeri yorumlayıcılar (sh, ksh, bash, zsh, pdksh...) ve printenv söz konusu olduğunda env yorumlayıcısının yerleşik komutunu çağırarak bir oturum için bir dizi değişkenin içeriğini değerlendirebilirsiniz. C-Shell klon yorumlayıcılarının kullanılması durumunda (csh, tcsh. ..):

$ env HOSTNAME=myhost TERM=xterm SHELL=/bin/bash HISTSIZE=1000 KDE_NO_IPV6=1 SSH_CLIENT=172.16.0.9 50487 22 QTDIR=/usr/lib/qt-3.3 QTINC=/usr/lib/qt-3.3/include SSH_TTY =/dev/pts/6 USER=guest MOZILLA_CERTIFICATE_FOLDER=/home/guest/.evolution/ KDEDIR=/usr MAIL=/var/spool/mail/guest PATH=/usr/games:/usr/local/bin:/bin :/usr/bin:/home/guest/bin INPUTRC=/etc/inputrc PWD=/home/guest KDE_IS_PRELINKED=1 LANG=ru_RU.UTF-8 KDEDIRS=/home/guest/.local/ SSH_ASKPASS=/usr/libexec /openssh/gnome-ssh-askpass SHLVL=1 HOME=/home/guest LOGNAME=guest QTLIB=/usr/lib/qt-3.3/lib CVS_RSH=ssh SSH_CONNECTION=172.16.0.9 50487 172.16.2.9 22 LESSOPEN=|/usr /bin/lesspipe.sh %s G_BROKEN_FILENAMES=1 _=/bin/env

Komut setleri Kabuközel bir yorum türündeki ilk satırın bu kümeyi yürütmek için komut yorumlayıcısını gösterdiği komut dosyaları adı verilen toplu iş dosyalarına bağlanabilir. Örneğin, test adlı bir metin düzenleyicide aşağıdaki içeriğe sahip bir dosya oluşturalım:

#!/bin/sh echo TEST değişkeni: echo $TEST

Bu program, "Variable TEST:" metin mesajını ve ayarlanmışsa, TEST değişkeninin değerini standart çıktıya yazdıracaktır. Komut yorumlayıcısına bir parametre olarak ileterek komut satırından çalıştırabilirsiniz:

$ sh testi Değişken TEST:

export (Bourne) veya setenv (C-SHell) deyimini kullanarak bir değişkeni global hale getirebilirsiniz:

$ export TEST=test1 $ sh testi Değişken TEST: test1

Bu programın yürütülmesi için değişkenlerin yerel değerlerini, önlerine komutlar koyarak ayarlayabilirsiniz:

$ TEST=test2 sh testi Değişken TEST: test2

Ortam değişkenleri, unset ifadesi kullanılarak kaldırılır.

Orijinal: Linux Temelleri
Yazar: Paul Cobbaut
Yayın tarihi: 16 Ekim 2014
Tercüme: A.Panin
Transfer tarihi: 13 Aralık 2014

Bölüm 12 Kabuk Değişkenleri

Bu bölümde, kabuğu kullanarak ortam değişkenleriyle nasıl çalışacağımızı öğreneceğiz. Bu değişkenler genellikle uygulamaların çalışması için gereklidir.

Dolar simgesi ($)

Kabuk tarafından yorumlanan bir diğer önemli sembol dolar sembolüdür $ . Kabuk, dolar işaretinden sonraki dizeyle eşleşen bir ada sahip bir ortam değişkeni arayacak ve verilen karakteri ve değişken adını o değişkenin değeriyle (veya değişken yoksa hiçbir şeyle) değiştirecektir.

Aşağıda $HOSTNAME, $USER, $UID, $SHELL ve $HOME değişkenlerinin kullanımına ilişkin bazı örnekler verilmiştir. $ echo Bu $SHELL kabuğu Bu /bin/bash kabuğu $ echo Verilen $SHELL kabuğu makinede kullanılıyor $HOSTNAME Belirtilen /bin/bash kabuğu makinede kullanılıyor RHELv4u3.localdomain $ yankı kullanıcı kimliği $USER $UID'dir Paul kullanıcı kimliği 500 $ echo Ana dizinim $HOME Ana dizinim /home/paul

Büyük küçük harf duyarlılığı

Bu örnek, kabuk değişken adlarının büyük/küçük harfe duyarlı olduğunu gösterir! $ echo Merhaba $USER Merhaba paul $ echo Merhaba $user Merhaba

Değişkenler Oluşturma

Bu örnek, $MyVar değişkenini oluşturur ve ardından değerini ayarlar. Örnek daha sonra, oluşturulan değişkenin değerini kontrol etmek için echo komutunu kullanır. $ MyVar=555 $ yankı $MyVar 555 $

Alıntılar

Çift tırnak aynı zamanda komut satırında değişken genişletmeye izin verirken, tek tırnak bu tür genişletmeyi engeller. $ MyVar=555 $ echo $MyVar 555 $ echo "$MyVar" 555 $ echo "$MyVar" $MyVar

Bash kabuğu, değişkenleri çift tırnaklı dizelerdeki değerleriyle değiştirecek, ancak tek tırnaklı dizelerde bunu yapmayacaktır. [e-posta korumalı]:~$ şehir=Burtonville [e-posta korumalı]:~$ yankı "Artık $şehirdeyiz." Şu anda Burtonville'deyiz. [e-posta korumalı]:~$ yankı "Artık $şehirdeyiz." Şimdi $city'deyiz.

komut ayarla

Ortam değişkenlerini listelemek için set komutunu kullanabilirsiniz. Ubuntu ve Debian sistemlerinde set komutu, kabuk değişkenleri listesinden sonra kabuk işlevlerini de listeleyecektir. Bu nedenle, bu sistemlerle çalışırken ortam değişkenleri listesinin tüm öğelerini tanımak için set | Daha.

komutu kaldır

Kabuk ortamınızdan bir değişkeni kaldırmak için unset komutunu kullanmalısınız. $ MyVar=8472 $ echo $MyVar 8472 $ MyVar'ı kaldır $ echo $MyVar $

Ortam değişkeni $PS1

$PS1 ortam değişkeni, kabuğunuzun karşılama biçimini ayarlar. Bir biçim dizesi girerken, kullanıcı adını görüntülemek için \u veya çalışma dizini adını görüntülemek için \w gibi özel karakterlerden kaçınmak için ters eğik çizgi kullanabilirsiniz. Bash kabuğu man sayfası, özel karakterlerin tam bir listesini içerir.

Aşağıdaki örnekte, $PS1 ortam değişkeninin değerini birkaç kez değiştiriyoruz. [e-posta korumalı]:~$ PS1=soru istemi istemPS1="soru " istemi istemi PS1="> " > > PS1="\ [e-posta korumalı]\h$" [e-posta korumalı]$ [e-posta korumalı]$PS1="\ [e-posta korumalı]\h:\W$" [e-posta korumalı]:~$

Ölümcül hatalardan kaçınmak için, normal kullanıcılara görüntülenen kabuk istemleri için yeşil ve kök kullanıcıya görüntülenen kabuk istemleri için kırmızı kullanabilirsiniz. Normal kullanıcılara görüntülenen istemlerde yeşil rengi kullanmak için aşağıdaki satırları .bashrc dosyanıza ekleyin. # paul tarafından oluşturulan renkli kabuk istemi RED="\[\033" WHITE="\[\033" GREEN="\[\033" BLUE="\[\033" export PS1="$(debian_chroot:+( $ debian_chroot))$YEŞİL\ [e-posta korumalı]$MAVİ\h$BEYAZ\w\$"

$PATH ortam değişkeni

$PATH ortam değişkeni, kabuğun komutları yürütmek için gereken ikili dosyaları aradığı dosya sistemi dizinlerini ayarlar (komut bir yerleşik veya komut takma adı değilse). Bu değişken, iki nokta üst üste ile ayrılmış dizin yollarının bir listesini içerir. [$ echo $PATH /usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:

Kabuk, geçerli dizindeki yürütülebilir ikili dosyaları aramaz. (Geçerli dizindeki yürütülebilir dosyaları arama işlevi, PC-DOS çalıştıran bilgisayarlarda depolanan verilere yetkisiz erişim için en basit mekanizmaydı). Kabuğun geçerli dizindeki yürütülebilir dosyaları aramasını istiyorsanız, sembolü eklemelisiniz. kabuğunuzun $PATH değişkeninin değeri olan satırın sonuna. $PATH=$PATH:. $ echo $PATH /usr/kerberos/bin:/usr/yerel/bin:/bin:/usr/bin:. $

Su - komutu yerine su komutunu kullanırsanız, kabuğunuzun $PATH değişkeninin değeri farklı olabilir, çünkü ikinci komut, hedef kullanıcının ortam değişkenlerinin değerlerini ek olarak kullanmanıza izin verir. Örneğin, /sbin dizinleri genellikle $PATH değişkeninin değeriyle temsil edilen kök kullanıcının dizin listesine eklenir. $ su Şifre: # echo $PATH /usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin # çıkış $ su - Şifre: # echo $PATH /usr/local/sbin:/usr/ yerel/bin:/sbin:/bin:/usr/sbin:/usr/bin: #

env komutu

env komutu parametresiz kullanıldığında dışa aktarılan ortam değişkenlerini listeler. Bu komut ile seçenekli set komutu arasındaki fark, set komutunun alt kabuklara verilmeyen değişkenler dahil tüm ortam değişkenlerini listelemesidir.

Ek olarak, env komutu "saf" bir kabuk (herhangi bir ortamı devralmayan bir kabuk) başlatmak için de kullanılabilir. env -i komutu, alt kabuğun ortamını temizler.

Bu örnekte, bash kabuğunun başlangıçta $SHELL ortam değişkenini ayarlayacağına dikkat edin. $ bash -c "echo $SHELL $HOME $USER" /bin/bash /home/paul paul $ env -i bash -c "echo $SHELL $HOME $USER" /bin/bash $

$LANG değişkeninin veya aynı bash kabuğunun herhangi bir başka ortam değişkeninin değerini tek bir komut içinde ayarlamak için env komutunu kullanabilirsiniz. Aşağıdaki örnek, $LANG değişkeninin değerinin kalıp dosyası arama motorunun işleyişi üzerindeki etkisini göstermek için bu özelliği kullanır (bu mekanizma hakkında daha fazla bilgi için, kalıp dosyası arama bölümüne bakın). $ env LANG=C bash -c "ls Dosyası" Dosyaa Dosyab $ env LANG=en_US.UTF-8 bash -c "ls Dosya" Dosyaa DosyaA Dosyab DosyaB $

dışa aktarma komutu

Dışa aktarma komutunu kullanarak kabuk değişkenlerini diğer kabuklara verebilirsiniz. Aşağıdaki örnekte, bu komut bir ortam değişkenini alt kabuklara verir. $ var3=üç $ var4=dört $ dışa aktarma var4 $ echo $var3 $var4 üç dört $ bash $ echo $var3 $var4 dört

Ancak, bu komut kullanılarak, değişken ana kabuğa aktarılmaz (aşağıda önceki örneğin devamı bulunmaktadır). $ export var5=beş $ echo $var3 $var4 $var5 dört beş $ çıkış çıkış $ echo $var3 $var4 $var5 üç dört $

Değişken sınırlayıcılar

Şimdiye kadar, bash kabuğunun dolar işaretiyle başlayan bir değişkeni yorumladığını ve alt çizgi olmayan ilk alfasayısal olmayan karakter görünene kadar yorumlamaya devam ettiğini gördük. Bazı durumlarda, bu davranış bir sorun olabilir. Aşağıdaki örnekte gösterildiği gibi kaşlı ayraçlar bu sorunu çözmek için kullanılabilir. $ prefix=Super $ echo Merhaba $prefixman ve $prefixgirl Merhaba ve $ echo Merhaba $(prefix)man ve $(prefix)girl Merhaba Superman ve Supergirl $

İlişkisiz değişkenler

Aşağıdaki örnek, $MyVar değişkeninin değerini görüntülemeye çalışır, ancak değişken olmadığı için başarılı olmaz. Varsayılan olarak, değişken bağlı değilse (mevcut değilse), kabuk herhangi bir çıktı vermez. $ yankı $MyVar$

Ancak, kullanılan değişken yoksa bir hata oluşturmak için kullanabileceğiniz bir isim kümesi olmayan kabuk seçeneği vardır. [e-posta korumalı]:~$ ayarla -u [e-posta korumalı]:~$ echo $Myvar bash: Myvar: ilişkisiz değişken [e-posta korumalı]:~$ +u ayarla [e-posta korumalı]:~$ yankı $Myvar [e-posta korumalı]:~$

Bash kabuğunda set -u, set -o nounset ile aynıdır ve benzer şekilde set +u, set +o nounset ile aynıdır.

Alıştırma: Kabuk Değişkenleri

2. Değeri 42 olan bir answer değişkeni oluşturun.

3. $LANG değişkeninin değerini $MyLANG değişkeninin değerine kopyalayın.

4. Şu anda kullanılan kabuk değişkenlerini listeleyin.

5. Dışa aktarılan tüm kabuk değişkenlerini listeleyin.

6. Env ve set komutlarının çıktısında değişkeniniz hakkında bilgi var mı?

7. Cevap değişkeninizi yok edin.

8. İki değişken oluşturun ve bunlardan birini dışa aktarın.

9. Dışa aktarılan değişkenin değerini alt etkileşimli kabukta yazdırın.

10. Bir değişken oluşturun ve ona "Dumb" değerini atayın, ardından aynı şekilde "do" değerine sahip başka bir değişken oluşturun. "Dumbledore" kelimesini çıkarmak için yankı komutunu ve oluşturduğunuz iki değişkeni kullanın.

11. Bash kabuğu man sayfasında ters eğik çizgiden kaçan kontrol karakterlerinin bir listesini bulun. Hello kabuğundaki zamanı görüntülemek için PS1 değişkeninin değerine bir kontrol karakteri ekleyin.

Doğru Uygulama Prosedürü: Kabuk Değişkenleri

1. "Merhaba" dizesini ve ardından adınızı yazdırmak için echo komutunu kullanın. (Bash kabuk değişkenini kullanın!)

Bir kabukta parametre kavramı darbe geleneksel programlama dillerindeki değişken kavramına benzer. Parametre adı (veya tanımlayıcı), alfabetik karakterler, rakamlar ve alt çizgilerden oluşan bir kelime (bu kelimenin yalnızca ilk karakteri rakam olamaz), bir sayı veya aşağıdaki özel karakterlerden biri olabilir: * , @ , # , ? , - (tire), $ , ! , 0 , _ (altını çizmek).

Bir parametreye bir değer atanmışsa ayarlandığı veya ayarlandığı söylenir. Değer boş bir dize de olabilir. Bir parametrenin değerini görüntülemek için sembolünü kullanın. $ onun adından önce. evet takım

$ yankı adı

kelimeyi göster isim ve komut

$echo $isim

isim değişkeninin değerini döndürür (tabii ki ayarlanmışsa).

5.6.1 Parametre varyasyonları

Parametreler üç sınıfa ayrılır: konumsal parametreler, özel parametreler(adları az önce listelenen özel karakterlerdir) ve kabuk değişkenleri.

İsimler (tanımlayıcılar) konumsal parametreler bir veya daha fazla sayıdan (ancak tek bir sıfırdan değil) oluşur. Konum parametresi değerleri, kabuk başlatıldığında verilen argümanlardır (ilk argüman, konum parametresi 1'in değeridir, vb.). Yerleşik komutu kullanarak bir konum parametresinin değerini değiştirebilirsiniz. ayarlamak. Bu parametrelerin değerleri, kabuk işlevlerden birini yürütürken de değiştirilir (bu, aşağıda tartışılacaktır). saniye 5.8).

Özel Seçenekler değiştirmesi (ikame) aşağıdaki şekilde gerçekleştirilen şablonlardır.

Tablo 5.2.Özel seçenekler.

Parametre

Oyuncu Değiştirme Kuralları

İlkinden başlayarak konumsal parametrelerle değiştirilir. Değiştirme çift tırnak içinde yapılırsa, bu parametre, özel IFS değişkeninin (aşağıda tartışılacak olan) ilk karakteriyle ayrılan tüm konumsal parametrelerden oluşan tek bir kelime ile değiştirilir. Yani, ``$*"", ``$1c$2c..."" ile eşdeğerdir, burada c, IFS değişkeninin değerindeki ilk karakterdir. IFS boşsa veya ayarlanmamışsa seçenekler boşluklarla ayrılır

İlkinden başlayarak konumsal parametrelerle değiştirilir. Değiştirme çift tırnak içinde yapılırsa, her parametre ayrı bir kelime ile değiştirilir. Yani, `` [e-posta korumalı]"", ""$1"" ""$2"" ile eşdeğerdir ... Konumsal parametre yoksa, hiçbir değer atanmaz (@ parametresi basitçe kaldırılır)

Konum parametrelerinin sayısının ondalık değeriyle değiştirildi

Ön planda çalışan son program kanalının çıkış durumu ile değiştirilir

(tire)

Yerleşik komutla ayarlanan geçerli bayrak değerleri kümesiyle değiştirildi ayarlamak veya kabuğun kendisini başlatırken

Kabuğun işlem kimliği (P kimliği) ile değiştirildi

Son çalışan arka plan (eşzamansız olarak yürütülen) komutunun işlem kimliği (P kimliği) ile değiştirildi

Çalıştırılmakta olan kabuğun veya betiğin adıyla değiştirilir. Eğer darbe bir toplu iş dosyasını yürütmek için başlatıldığında, $0 bu dosyanın adına eşittir. Aksi takdirde, bu değer kabuğa giden tam yola eşittir.

(altını çizmek)

Yürütülen önceki komutun son bağımsız değişkeni ile değiştirilir (bir parametre veya değişken ise, değeri değiştirilir)

Yukarıdaki tabloda listelenen özel parametreler, yalnızca referans alınabilmeleri bakımından farklılık gösterir; onlara değer atayamazsınız.

Değişken kabuğun bakış açısından bu, isimle gösterilen parametredir. Aşağıdaki operatör kullanılarak değişkenlere değerler atanır

$isim=değer

Nerede isim değişkenin adıdır ve değer— ona atanan değer (boş bir dize olabilir). Bir değişken ismi sadece rakamlardan ve harflerden oluşabilir ve bir rakam ile başlayamaz. Değer herhangi bir metin olabilir. Değer özel karakterler içeriyorsa, tırnak işaretleri içine alınmalıdır. Atanan değer elbette bu alıntıları içermez. Değişken ayarlanmışsa yerleşik kabuk komutu kullanılarak kaldırılabilir. çöz.

Atanan değerleri ile tüm küme kabuk değişkenlerinin kümesine ortam veya kabuk ortamı denir. komutu ile görüntüleyebilirsiniz. ayarlamak parametreler olmadan (yalnızca, belki de bir boru hattı düzenlemek gerekir) "ayarla|daha az"). Bu komutun çıktısı, tüm ortam değişkenlerini alfabetik sırayla listeler.Komutu kullanmak yerine, belirli bir değişkenin değerini görüntülemek için ayarlamak(istenen değişkenin hala aranacağı ve aranacağı çıktıda) komutunu kullanabilirsiniz.

$echo $isim

(ancak bu durumda ilgilendiğiniz değişkenin adını bilmeniz gerekir).

Komutun çıktısında göreceğiniz değişkenler arasında ayarlamak, bazı çok ilginç değişkenler var. Örneğin RANDOM değişkenine dikkat edin. Komutu art arda birkaç kez çalıştırırsanız

$ yankı $ RASTGELE

her seferinde yeni bir değer alacaksınız. Gerçek şu ki, bu değişken 0 - 32.768 aralığından rastgele bir tamsayı döndürür.

5.6.2 Kabuk istemleri

Çok önemli değişkenlerden biri adlandırılmıştır. PS1. Bu değişken, bilgi isteminin türünü belirtir. darbe kullanıcıdan bir sonraki komutu beklerken yazdırır. Varsayılan olarak, bu değişken "\s-\v\$" olarak ayarlanmıştır. Aslında içinde darbe Farklı durumlarda kullanılan dört bilgi istemi vardır. Değişken PS1 kabuk bir komut beklerken verilen bilgi istemi dizesinin türünü belirtir. Değişken tarafından ayarlanan ikincil bilgi istemi PS2, kabuk, kullanıcının çalışan komut veya programın devamı için gerekli bazı verileri girmesini beklerken görünür. varsayılan değişken PS2 anlamı vardır" >" . Komutu çalıştırdığınızda bu istemi zaten görmüş olabilirsiniz. kedi klavyeden bir dosyaya veri girmek için. Başka bir örnek, komuttur. ftp, lansmandan sonra daveti de bu şekilde alır.

Değişken Bilgi İstemi PS3, komutta kullanılır seçme. Değişken Bilgi İstemi PS4, her komuttan önce yazdırılır, şu anda darbe ilerlemeyi izler. Varsayılan değer " + ".

Böyle bir arzunuz varsa, değişkenlerin türünü değiştirebilirsiniz. PS1 Ve PS2. Bu durumda, klavyeden girilen herhangi bir karakteri ve ayrıca bilgi istemi dizisini oluştururken Tablo'ya göre kodu çözülen bir dizi özel karakteri kullanabilirsiniz. 5.3 (yalnızca bazıları verilmiştir, örneğin; tam liste için yardımcı programın kılavuz sayfasına bakın darbe) .

Tablo 5.3. Davetiye oluşturmak için özel karakterler

Sembol

Anlamı

Bip sesi (ASCII kodu 07)

Gün, Ay, Gün biçiminde bir tarih, örneğin Çar, 17 Ekim.

Ana bilgisayar adı ilk noktaya kadar

Tam ana bilgisayar adı

24 saat formatında şimdiki saat: SS:DD:SS (saat:dakika:saniye)

12 saat formatında şu anki saat: SS:DD:SS

12 saatlik am/pm biçiminde şimdiki saat

Kabuğu başlatan kullanıcının adı

Geçerli çalışma dizininin tam adı (kökten başlayarak)

Geçerli çalışma dizini (yol belirtilmemiş)

Kabuk süper kullanıcı olarak çalışıyorsa # karakteri ve $ kabuk normal bir kullanıcı tarafından başlatılırsa.

\nnn

Sekizli koda sahip karakter nnn

Yeni satır (satır besleme)

Kabuk adı

Mevcut takım numarası

ters eğik çizgi (bir ters eğik çizgi)

Yazdırılamayan karakter dizisinin başlangıcı (bu karakter, bilgi istemi metnine bir dizi terminal kontrol karakteri eklemek için kullanılabilir)

Yazdırılamayan karakter dizisinin sonu

Bu komutun komutlar geçmişindeki sıra numarası

Geçerli komut numarası (geçerli oturumda yürütülmekte olan komutun sıra numarası), komut geçmişi listesindeki bu komutun numarasından farklı olabilir, çünkü ikincisi komut geçmişi dosyasına kaydedilmiş komutları içerir.

Bir ipucu tanımlayan bir değişkenin değeri kabuk tarafından okunduktan sonra, parametre genişletme, komut adlarında ve aritmetik ifadelerde ve kelime bölme kurallarına göre değiştirmeler yapılabilir. Bu kurallar aşağıda Bölüm 1'de tartışılacaktır. 5.7.

Örneğin, komutu çalıştırdıktan sonra (dizede boşluk olduğu için tırnak işaretleri gereklidir)

#PS1="[\ [e-posta korumalı]\h \W]\$"

standart bilgi istemi bir köşeli parantez, kullanıcı adı, sembol gösterecektir @ , bilgisayar adı, boşluk, geçerli dizin adı (yol yok), kapanış köşeli parantez ve sembol $ (kabukta basit bir kullanıcı çalışıyorsa) veya # (kabuk kök olarak çalışıyorsa).

5.6.3 Değişken YOL

Diğer bir çok önemli değişken ise, YOL. Dizinlere giden yolların bir listesini belirtir. darbe dosyanın tam yolunun komut satırında belirtilmediği durumlarda dosyaları (özellikle komut içeren dosyaları) arar. Bu listedeki tek tek dizinler iki nokta üst üste ile ayrılmıştır. varsayılan değişken YOL dizinleri içerir /usr/yerel/bin, /bin, /usr/bin, /usr/X11R6/bin, yani şu forma sahiptir:

/usr/yerel/bin:/bin:/usr/bin:/usr/X11R6/bin:

Bu listeye bir dizin eklemek için aşağıdaki komutu çalıştırın:

# PATH=$PATH:yeni_yol.

Arama yaparken, kabuk dizinleri tam olarak PATH değişkeninde listelendikleri sırayla arar.

PATH değişkenine bir nokta ekleyerek geçerli dizini de bu listeye dahil edebileceğinizi unutmayın. Ancak, güvenlik nedenleriyle bu önerilmez: Saldırgan, genel dizine kök kullanıcı tarafından sıklıkla yürütülen komutlardan biriyle aynı ada sahip ancak tamamen farklı eylemler gerçekleştiren bir komut koyabilir (özellikle geçerli dizin şu konumdaysa) arama yolu listesinin başı).

5.6.4 Değişken IFS

Bu değişken, komut satırı yürütülmeden önce kabuk tarafından gerçekleştirilen komut satırı dönüştürmelerinin sözcük bölme işleminde kullanılan Dahili Alan Ayırıcısını belirtir. Bu değişkenin varsayılan değeri "<Пробел><Символ_ новой_ строки>".

5.6.5 Geçerli ve ana dizinler

Geçerli dizinin adı bir ortam değişkeninde (PWD olarak adlandırılır) saklanır ve bu değişkenin değeri program her başlatıldığında değiştirilir. CD(ve ayrıca geçerli dizini başka bir şekilde, örneğin Midnight Commander aracılığıyla değiştirirken).

Benzer şekilde, işlemi başlatan kullanıcının giriş dizininin tam adı (yol ile birlikte) HOME değişkeninde saklanır.

5.6.6 Komut ihracat

Bir kabuk bir programı veya komutu yürüttüğünde, bazı ortam değişkenlerini bunlara iletir. Bir ortam değişkeninin kabuktan başlatılan bir işleme iletilebilmesi için özel bir komut kullanılarak ayarlanması gerekir. ihracat, yani yerine

$isim=değer

yazılmalıdır

$ ihracat adı=değer

Bu durumda, kabuktan başlatılan tüm programlar (kabuğun kendisinin ikincil örnekleri dahil) bu şekilde tanımlanan değişkenlere erişebilir, yani değerlerini adıyla çağırabilirler.

V. Kostromin (rus-linux nokta ağında kos) - 5.6. Parametreler ve değişkenler. Kabuk ortamı

Ortam Değişkenleri ( Çevre değişkeni), komut dosyaları ve programlar arasında değişkenlerin ortak değerlerini depolamak için kullanılır. Bu tür değişkenler, belirli bir terminal kabuğunun çalışma süresi veya bir kullanıcı oturumu süresi gibi belirli bir süre için ayarlanabilir veya tüm sistem için küresel 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
Yürütülebilir programları aramak için kabuğun dizin listesi. $PWD
Geçerli çalışma dizinine (veya pwd). Örnek: dir_path=$(pwd) . $kabuğu
Varsayılan tercüman $RANDOM
Değişkene her erişildiğinde rastgele bir sayı 0..32767 üretir. $SANİYE
Saniye cinsinden süre kabuğun başlangıcından beri. $? Bir önceki komutun sonucu. $HOSTNAME
Bilgisayar adı $HISTFILE
$IFS tercüman geçmişi dosyasının yolu
Komutlar, parametreler, dizi öğeleri için ayırıcı karakterlerin listesi (varsayılan: boşluk, sekme, yeni satır) $PS1
Tercüman bilgi istemi dizesi şablonu.

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

Oturum süresi için bir ortam değişkeni ayarlamak:

# Yeni bir işlem için env varname=değer [komut] # Geçerli kabuk ve tüm alt işlemleri için export varname=değer [komut]

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

Sabit bir değer ayarlama

Sistem düzeyinde ortam değişkenleri, /etc/environment dosyası aracılığıyla ayarlanır:

ÇEVRE="geliştirici"

~/.bashrc veya ~/.bash_profile aracılığıyla kullanıcıya özel bir ortam değişkeni ayarlamak:

PATH="$(PATH):/home/user/bin:"

Dikkat!

Yorumlayıcı -l seçeneğiyle başlatıldığında ~/.bash_profile dosyası yürütülür. Yerel olarak oturum açıldığında bu dosya okunamaz!

Ayrıca, değişikliklerin yalnızca oturum yeniden başlatıldıktan sonra geçerli olacağını da hatırlamanız gerekir!

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 komutunu kullanın:

Yazdır<имя_переменной>

#kabuk, #bash, #çevre

Ortam değişkenleri, kabukta tanımlanan ve çalışma zamanında programlar veya betikler tarafından ihtiyaç duyulan özel değişkenlerdir. Sistem veya kullanıcı tarafından tanımlanabilirler. Sistem tanımlı değişkenler, sistem tarafından belirlenen değişkenlerdir.

örneğin komut özürlü geçerli çalışma dizinini depolamak için kullanılan çok yaygın bir sistem değişkenidir. Kullanıcı değişkenleri genellikle geçerli kabuk için geçici olarak veya kalıcı olarak ayarlanır. Ortam ayarlarını yapılandırma ve değiştirme kavramının tamamı, bir dizi dosya, birkaç komut ve farklı kabuklar etrafında döner.

Daha kesin olarak, bir ortam değişkeni üç türden olabilir:

1. Yerel ortam değişkeni

Geçerli oturum için tanımlanır. Bu ortam değişkenleri, ister uzaktan oturum açma oturumu ister yerel terminal oturumu olsun, geçerli oturumun süresi boyunca kullanılır. Bu değişkenler herhangi bir yapılandırma dosyasında belirtilmez ve özel bir komut dizisi kullanılarak oluşturulur ve kaldırılır.

2. Kullanıcı ortamı değişkeni

Bunlar, kullanıcı bir yerel terminal oturumu kullanarak her oturum açtığında veya bu kullanıcı bir uzak oturum oturumu kullanarak oturum açtığında yüklenen, kullanıcıya özel değişkenlerdir. Bu değişkenler genellikle aşağıdaki yapılandırma dosyalarından ayarlanır ve yüklenir: .bashrc,.bash_profile,.bash_login,.profil, kullanıcının ana dizininde bulunur.

3. Sistem ortamı değişkenleri

Bunlar, sistem genelinde, yani o sistemde bulunan tüm kullanıcılar için kullanılabilen ortam değişkenleridir. Bu değişkenler, aşağıdaki dizinlerde ve dosyalarda bulunan sistem çapında yapılandırma dosyalarında bulunur: /etc/ortam,/etc/profile, /etc/profile.d/, /etc/bash.bashrc. Bu değişkenler, sistem her açıldığında yüklenir ve kullanıcılar yerel olarak veya uzaktan oturum açar.

Paylaşılan ve Sistem Çapında Yapılandırma Dosyalarını Anlama

Burada, hem sistem hem de kullanıcı ortam değişkenlerini içeren, yukarıda listelenen çeşitli yapılandırma dosyalarını kısaca açıklayacağız.

.bashrc

Bu dosya, kullanıcı her yeni yerel oturum oluşturduğunda yüklenen bir kullanıcı dosyasıdır, örn. basit bir deyişle, yeni bir terminal açar. Bu dosyada oluşturulan tüm ortam değişkenleri, her yeni yerel oturum başlatıldığında etkinleşir.

.bash_profile

Bu dosyada listelenen ortam değişkenleri, bir kullanıcı uzaktan, yani komutla her oturum açtığında çağrılır. ssh. Bu dosya yoksa, sistem dosyaları arar. .bash_login veya .profil.

/etc/ortam

Bu dosya, herhangi bir ortam değişkenini oluşturmak, düzenlemek veya silmek için kullanılan bir sistem dosyasıdır. Bu dosyada oluşturulan ortam değişkenleri, hem yerel olarak hem de uzaktan, tüm sistem genelinde, küresel olarak her kullanıcı tarafından kullanılabilir.

/etc/bash.bashrc

Sistem dosyası bashrc. Bu dosya, kullanıcı her yerel terminal oturumunu açtığında kullanıcı başına bir kez indirilir. Bu dosyada oluşturulan ortam değişkenleri, tüm kullanıcılar tarafından kullanılabilir, ancak yalnızca yerel bir terminal oturumu aracılığıyla. Bu bilgisayardaki herhangi bir kullanıcı uzaktan oturum açma yoluyla silindiğinde, bu değişkenler görünmez.

/etc/profil

Bu dosyada oluşturulan tüm değişkenler, sistemdeki her kullanıcı tarafından kullanılabilir, ancak yalnızca bu kullanıcı oturumu uzaktan, yani uzaktan oturum açma yoluyla çağrılırsa. Bu dosyadaki herhangi bir değişken, yerel oturum açma oturumunda mevcut olmayacaktır, örn. kullanıcı kendi yerel sisteminde yeni bir terminal açtığında.

Not. Sistem genelinde veya kullanıcı tanımlı yapılandırma dosyaları kullanılarak oluşturulan ortam değişkenleri silinebilir, ancak bunu yalnızca bu dosyalardan yapabilirsiniz. Bu dosyalarda yapılan her değişiklikten hemen sonra, ya oturumu kapatın ya da tekrar oturum açın ya da değişikliklerin geçerli olması için terminalde aşağıdaki komutu yazmanız yeterlidir:

$ kaynak

Linux'ta yerel veya oturum ortamı değişkenlerini ayarlama veya kaldırma

Yerel ortam değişkenleri aşağıdaki komutlar kullanılarak oluşturulabilir:

$ var=değer VEYA $ dışa aktarma var=değer

Bu değişkenler oturum değişkenleridir ve yalnızca geçerli terminal oturumu için geçerlidir. Bu ortam değişkenlerini temizlemek için aşağıdaki komutları kullanabilirsiniz:

1. Kullanım çevre

Varsayılan komut " çevre» tüm geçerli ortam değişkenlerini listeler. Ancak, " tuşuyla kullanılırsa -Ben”, ardından tüm ortam değişkenlerini geçici olarak temizler ve kullanıcının tüm ortam değişkenlerinin yokluğunda mevcut oturumda komutu çalıştırmasına izin verir.

$ env -i ... komut değişkenleri ...

Burada var = value, yalnızca bu komutla kullanmak istediğiniz herhangi bir yerel ortam değişkeniyle eşleşir.

$ env -i bash

Tüm ortam değişkenlerinin geçici olarak silineceği bash kabuğunu başlatıyoruz. Ancak kabuktan çıktığınızda, tüm değişkenler geri yüklenecektir.

2. İptalin Kullanılması

Yerel bir ortam değişkenini temizlemenin başka bir yolu da komutu kullanmaktır. çöz. Herhangi bir yerel ortam değişkenini geçici olarak devre dışı bırakmak için,

$unset

Nerede, var-adı silmek veya temizlemek istediğiniz yerel değişkenin adıdır.

3. ile değişken adını ayarlayın. boş değer

Daha az popüler olan başka bir yol da, temizlemek istediğiniz değişkenin adını boş bir değere ayarlamaktır, örn. VAR=(eşittir'den sonra hiçbir şey yoktur - enter'a basın). Bu, etkin olduğu geçerli oturum için yerel değişkenin değerini temizleyecektir.

NOT. SİSTEM DEĞİŞKENLERİNİ DEĞİŞTİREBİLİRSİNİZ AMA DEĞİŞİKLİKLER SADECE MEVCUT OTURUMA YANSIYACAK VE KALICI OLMAYACAKTIR.

Linux'ta Kullanıcı ve Sistem Ortamı Değişkenlerinin Nasıl Oluşturulacağını Öğrenin

Bu bölümde, aşağıdaki örneklerle Linux'ta yerel, kullanıcı ve sistem ortamı değişkenlerinin nasıl ayarlanacağına veya devre dışı bırakılacağına bakacağız:

1. Linux'ta yerel değişkenleri ayarlamak ve kaldırmak.

a) Burada yerel bir değişken oluşturuyoruz VAR1 ve herhangi bir değere ayarlayın. daha sonra kullanırız çöz ve sonunda bu değişkeni siliyoruz.

$ VAR1="TecMint, Linux Makaleleri için en iyi Sitedir" $ echo $VAR1 $ unset VAR1 $ echo $VAR1

b) Yerel bir değişken oluşturmanın başka bir yolu da komutu kullanmaktır. ihracat. Oluşturulan yerel değişken, geçerli oturum için kullanılabilir olacaktır. Bir değişkeni devre dışı bırakmak için değişkeni boş bir değere ayarlamanız yeterlidir.

$ export VAR="TecMint, Linux Makaleleri için en iyi Sitedir" $ echo $VAR $ VAR= $ echo $VAR

c) Burada yerel bir değişken oluşturduk. VAR2 ve değerini ayarlayın. Ardından, tüm yerel ve diğer ortam değişkenlerini geçici olarak temizleyerek komutu çalıştırmak için " komutunu çalıştırdık. çevre -Ben". Bu komut burada bir kabuk başlattı darbe, diğer tüm ortam değişkenlerini temizleyerek. " girdikten sonra çıkış» çağrılan kabukta darbe tüm değişkenler geri yüklenecektir.

$ VAR2="TecMint, Linux Makaleleri için en iyi Sitedir" $ echo $VAR2 $ env -i bash $ echo $VAR2

2. Linux'ta kullanıcı ortamı değişkenlerini ayarlamak ve kaldırmak.

a) Dosyayı değiştir .bashrc eklemek istediğiniz ortam değişkenini dışa aktarmak veya ayarlamak için ana dizininizde. Bundan sonra, değişikliklerin etkili olması için dosyayı çalıştırın. Ardından, yürürlüğe giren değişkeni (benim durumumda "CD") göreceksiniz. Bu değişken, bu kullanıcı için her yeni terminal açtığınızda kullanılabilir olacak, ancak uzaktan oturum açma oturumları için kullanılamayacak.

$vi .bashrc

.bashrc.

CD'yi Dışa Aktar="Burası TecMint Home"

Şimdi yeni değişikliklerin yürürlüğe girmesi ve değişkeni test etmesi için aşağıdaki komutu çalıştırın.

$ kaynak .bashrc $ yankı $CD

Bu değişkeni kaldırmak için dosyadaki satırı silmeniz yeterlidir. bashrc ve kabuğa tekrar girin.

b) Uzaktan oturum açma oturumlarında kullanılabilecek bir değişken eklemek için dosyayı değiştirin .bash_profile.

$ vi .bash_profile

Dosyaya aşağıdaki satırı ekleyin .bash_profile.

Export VAR2="Burası TecMint Home"

Değişken, kullanarak uzaktan çalıştırıldığında kullanılabilir olacaktır. ssh o kullanıcı için oturum açın, ancak yeni bir yerel terminal açarken değil.

$ kaynak .bash_profile $ yankı $ var2

Burada VAR2 başlangıçta mevcut değil, ancak kullanarak uzaktan oturum açtığınızda ssh kullanıcı açık yerel ana bilgisayar, değişken kullanılabilir hale gelir.

$ ssh $ yankı $ var2

Bu değişkeni kaldırmak için dosyadaki satırı kaldırmanız yeterlidir. .bash_profile eklediğiniz ve dosyayı yeniden okuduğunuz.

NOT. Bu değişkenler mevcut kullanıcı için her girişte mevcut olacak, ancak diğer kullanıcılar için mevcut olmayacak.

3. Linux'ta sistem ortamı değişkenlerini ayarlamak ve kaldırmak.

a) Oturum açmayan bir sistem değişkeni (yani, herhangi biri yeni bir terminal açtığında tüm kullanıcılar tarafından kullanılabilen, ancak makinede herhangi bir kullanıcıya uzaktan erişim olmadığında kullanılamayan) eklemek için bu değişkeni dosyaya ekleyin /etc/bash.bashrc.

Export VAR="Bu, sistem çapında bir değişkendir"

Ardından dosyayı yeniden okuyun.

$kaynak /etc/bash.bashrc

Bu değişken artık yeni bir terminal açtıklarında her kullanıcı tarafından kullanılabilir olacaktır.

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

Burada değişken hem kök kullanıcı hem de normal kullanıcı için kullanılabilir. Farklı bir kullanıcı olarak giriş yaparak bunu kontrol edebilirsiniz.

b) Bilgisayarınızdaki kullanıcılardan herhangi biri uzaktan oturum açtığında ancak yerel bilgisayarda yeni bir terminal açmadığında bazı ortam değişkenlerinin kullanılabilir olmasını istiyorsanız, dosyayı düzenlemeniz gerekir - /etc/profil .

Export VAR1="Bu, yalnızca uzak oturumlar için sistem çapında bir değişkendir"

Değişkeni ekledikten sonra dosyayı yeniden okuyun. Ardından değişken kullanılabilir olacaktır.

$kaynak/etc/profil $echo $var1

Bu değişkeni kaldırmak için satırı dosyadan kaldırın /etc/profil ve tekrar okuyun.

c) Ancak, hem uzaktan oturum açma oturumları hem de tüm kullanıcılar için yerel oturumlar için sistem genelinde kullanılabilir olmasını istediğiniz herhangi bir ortama bir değişken eklemek isterseniz, değişkeni dışa aktarmanız yeterlidir. /etc/ortam.

Export VAR12="Her yerde müsaitim"

Bundan sonra, dosyayı yeniden okuyun ve değişiklikler geçerli olacaktır.

$ kaynak /etc/environment $ echo $VAR12 $ sudo su $ echo $VAR12 $ çıkış $ ssh localhost $ echo $VAR12

Burada ortam değişkeninin normal kullanıcı, kök kullanıcı ve ayrıca uzaktan oturum açma oturumu için kullanılabilir olduğunu görebiliriz.

Bu değişkeni temizlemek için dosyadaki girişi silmeniz yeterlidir. /etc/ortam ve dosyayı yeniden okuyun.

NOT. Dosya yeniden okunduğunda değişiklikler etkili olur /etc/ortam. Ancak, değilse, oturumu kapatıp tekrar oturum açmanız gerekebilir.

Aşağıdaki yorumlarda makale hakkında sorular sorun.

Makaleyi okumak için zaman ayırdığınız için teşekkür ederiz!

Herhangi bir sorunuz varsa, yorumlarda onlara sorun.

Blog güncellemelerimize abone olun ve bilgi iletişimi dünyasının haberlerinden haberdar olun!

Daha fazla bilgi edinmek ve BT çalışanları kalabalığı arasında bilginizle öne çıkmak için Cisco Academy'den Cisco kurslarına, Linux Professional Institute'tan Linux kurslarına kaydolun

  • Size pratik yapmak ve uyum sağlamak için uygun bir zaman soracağız: çalışmak için yeterli zaman olmadığını anlıyoruz.
  • Bireysel bir program istiyorsanız, tartışacağız ve uygulayacağız.
  • Öz-örgütlenme için net son tarihler belirleyeceğiz. Kişisel bir küratör, soruları yanıtlamak, tavsiyelerde bulunmak ve sınavları geçmek için son tarihlere uymanız konusunda sizi motive etmek için sizinle iletişime geçecektir.
  • Ayrıca size yardımcı olacağız:

    Fok
    Konunun devamı:
    Çözümler

    Çoğu kullanıcı, farklı tarayıcılarla çalışırken, boş bir sayfadan veya ihtiyaç duymadıkları bir sayfadan başlamak zorunda oldukları gerçeğiyle karşı karşıya kalır.