Profile, bashrc, alias

A MathWikiből
(Változatok közti eltérés)
(Egy példa '''.profile''' (vagy '''.bashrc''') állomány)
 
(egy szerkesztő 18 közbeeső változata nincs mutatva)
1. sor: 1. sor:
 
== A '''.profile''' és '''.bashrc''' állományok ==
 
== A '''.profile''' és '''.bashrc''' állományok ==
A '''bash''' shell indulása során először ellenőrzi, hogy bizonyos fájlok léteznek-e, és ha igen, akkor a bennük lévő parancsokat értelmezi és végrehajtja. Ezen fájlok között számunkra a két legfontosabb a HOME könyvtárunkban elhelyezkedő '''.profile''' és '''.bashrc''', amelyek segítségével személyes igényeink szerint tudjuk módosítani a '''bash''' parancsértelmező viselkedését. A '''.profile'''-ban elhelyezett parancsok csak az ú.n. '''login shell'''-ekben, míg a '''.bashrc'''-ben elhelyezettek csak a '''nem-login shell'''-ekben futnak le a parancsértelmező indítása során. '''Login shell'''-t indítunk pl. egy '''ssh'''-s vagy '''putty'''-os bejelentkezés alkalmával, és '''nem-login shell'''-t, indíthatunk a '''bash''' parancs begépelésével. Ez utóbbihoz persze előbb szükségünk van egy már működő parancsértelmezőre -- tipikusan egy '''login shell'''-re.
+
A '''bash''' shell indulása során először ellenőrzi, hogy bizonyos fájlok léteznek-e, és ha igen, akkor a bennük lévő parancsokat értelmezi és végrehajtja. Ezen fájlok között számunkra a két legfontosabb a HOME könyvtárunkban elhelyezkedő '''.profile''' és '''.bashrc''', amelyek segítségével személyes igényeink szerint tudjuk módosítani a '''bash''' parancsértelmező viselkedését. A '''.profile'''-ban elhelyezett parancsok csak az ú.n. '''login shell'''-ekben, míg a '''.bashrc'''-ben elhelyezettek csak a '''nem-login shell'''-ekben futnak le a parancsértelmező indítása során. '''Login shell'''-t indítunk pl. egy '''ssh'''-s vagy '''putty'''-os bejelentkezés alkalmával, és '''nem-login shell'''-t indíthatunk a '''bash''' vagy az '''xterm''' parancs begépelésével. Ez utóbbiakhoz persze előbb szükségünk van egy már működő parancsértelmezőre -- tipikusan egy '''login shell'''-re.
  
 
== Környezeti változók módosítása, beállítása ==
 
== Környezeti változók módosítása, beállítása ==
18. sor: 18. sor:
  
 
*A '''PATH''' nevű változó tartalmazza mindazon könyvtárak nevét, melyekben a '''bash''' keresni fogja a futtatható programokat. Ez a lista általában csak az operációs rendszer által nyújtott legfontosabb parancsokat tartalmazó könyvtárakra terjed ki:
 
*A '''PATH''' nevű változó tartalmazza mindazon könyvtárak nevét, melyekben a '''bash''' keresni fogja a futtatható programokat. Ez a lista általában csak az operációs rendszer által nyújtott legfontosabb parancsokat tartalmazó könyvtárakra terjed ki:
'''$ echo $PATH'''
+
    '''$ echo $PATH'''
/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin
+
    /usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin
 
:Ha viszont szeretnénk a saját programjainkat is ugyanolyan egyszerűen elindítani (az elérési útvonal megadása nélkül), mint a rendszerparancsokat, akkor célszerű lehet ennek a változónak a módosítása. Többnyire két ''könytárral'' célszerű kiegészíteni az alapértelmezett listát: az aktuális munkakönyvtárral (.) ill. ha sok saját progrtamunk van, akkor az azokat tartalmazó pl. a közvetlenül a HOME könyvtárunk alatti ''bin'' könvtárral:
 
:Ha viszont szeretnénk a saját programjainkat is ugyanolyan egyszerűen elindítani (az elérési útvonal megadása nélkül), mint a rendszerparancsokat, akkor célszerű lehet ennek a változónak a módosítása. Többnyire két ''könytárral'' célszerű kiegészíteni az alapértelmezett listát: az aktuális munkakönyvtárral (.) ill. ha sok saját progrtamunk van, akkor az azokat tartalmazó pl. a közvetlenül a HOME könyvtárunk alatti ''bin'' könvtárral:
'''$ export PATH=$PATH:.:$HOME/bin'''
+
    '''$ export PATH=$PATH:.:$HOME/bin'''
 
:Persze, ha ez a módosítás valóban indokolt, akkor az is nagyon valószínű, hogy erre minden egyes bejelentkezésünk után szükségünk lesz. Ekkor a parancsnak a minden alkalommal való újbóli begépelése helyett célszerűbb azt elhelyezni a '''.profile''' állományban.
 
:Persze, ha ez a módosítás valóban indokolt, akkor az is nagyon valószínű, hogy erre minden egyes bejelentkezésünk után szükségünk lesz. Ekkor a parancsnak a minden alkalommal való újbóli begépelése helyett célszerűbb azt elhelyezni a '''.profile''' állományban.
  
 
*A '''PS1''' változó segítségével a promptunkat szabályozhatjuk. Az ''egyszerű szövegen'' túlmenően néhány speciális dolgot is elhelyezhetünk a promptunkban. Pl. praktikus lehet a promptban elhelyezni az aktuális könyvtárat (\w), a gép nevét (\H),esetleg az időt (\t, \T, \@ vagy \A) vagy más egyéb dolgot, melyekről a '''man bash''' paranccsal kaphatunk bővebb információt. Egy lehetséges prompt beállító parancs:
 
*A '''PS1''' változó segítségével a promptunkat szabályozhatjuk. Az ''egyszerű szövegen'' túlmenően néhány speciális dolgot is elhelyezhetünk a promptunkban. Pl. praktikus lehet a promptban elhelyezni az aktuális könyvtárat (\w), a gép nevét (\H),esetleg az időt (\t, \T, \@ vagy \A) vagy más egyéb dolgot, melyekről a '''man bash''' paranccsal kaphatunk bővebb információt. Egy lehetséges prompt beállító parancs:
 
+
    '''$ export PS1="\t \H//\w> "'''
: '''$ export PS1="\t \H//\w> "'''
+
    '''15:01:54 omnibus//~> '''
: '''15:01:54 omnibus//~> '''
+
 
+
 
:Ha a parancsot a parancssorból adtuk ki, annak hatását azonnal le is mérhetjük.
 
:Ha a parancsot a parancssorból adtuk ki, annak hatását azonnal le is mérhetjük.
 
:(A "//" és a ">" közötti '~' jelentése: jelenleg éppen a '''HOME''' könyvtárunkban vagyunk.)
 
:(A "//" és a ">" közötti '~' jelentése: jelenleg éppen a '''HOME''' könyvtárunkban vagyunk.)
 +
:Mivel az egyszer már praktikusnak talált promptot általában szeretnénk minden bejelentkezésünk idején használni, célszerű a '''PS1''' változó módosítását is a '''.profile'''-ban elhelyezni.
  
 
== Az '''alias''' parancs ==
 
== Az '''alias''' parancs ==
39. sor: 38. sor:
 
parancsot követően a '''bash''' ismerni fogja az '''ll''' parancsot. Mindannyiszor, ha leírjuk, hogy '''ll''' a '''bash''' automatikusan átfordítja azt az '''ls -l''' paranccsá.
 
parancsot követően a '''bash''' ismerni fogja az '''ll''' parancsot. Mindannyiszor, ha leírjuk, hogy '''ll''' a '''bash''' automatikusan átfordítja azt az '''ls -l''' paranccsá.
  
== Egy példa '''.profile''' állomány==
+
Fájlok véletlenszerű törlése ('''rm'''), másolása ('''cp''') ill. mozgatása ('''mv''') esetenként végzetes hibákat okozhat. Ezen hibák többnyire megelőzhetőek a '''-i''' kapcsoló használatával. Ehhez vagy minden alkalommal be kell írnunk az ilyen parancsok mögé a kapcsolót, vagy az '''alias''' parancs segítségével módosíthatjuk a parancsok alapértelmezett viselkedését:
 +
$ alias cp="cp -i"
 +
Ezen parancsot követően pl. a "'''cp a.txt b.txt'''" parancs abban az esetben, ha már korábban is létezett egy 'b.txt' nevű fájl, akkor annak az automatikus felülírása helyett (ez történne a '''-i''' kapcsoló nélkül), az "új '''cp'''" parancs meg fogja kérdezni, hogy komolyan gondoltuk-e a fájl felülírását.
 +
 
 +
A környezeti változók módosításához hasonlóan, az '''alias''' parancsot is többnyire a '''.profile''' állományban célszerű alkalmazni.
 +
 
 +
== Egy példa '''.profile''' (vagy '''.bashrc''') állomány==
  
 
  export PATH=$PATH:.:$HOME/bin
 
  export PATH=$PATH:.:$HOME/bin
47. sor: 52. sor:
 
  alias la="ls -a"
 
  alias la="ls -a"
 
  alias lla="ls -la"
 
  alias lla="ls -la"
 +
 +
alias rm='rm -i'
 +
alias cp='cp -i'
 +
alias mv='mv -i'
 +
 
  alias euler="ssh euler.math.bme.hu"
 
  alias euler="ssh euler.math.bme.hu"
 
  alias maple='cd $HOME/working; maple'
 
  alias maple='cd $HOME/working; maple'
 +
 +
== További tájékozódáshoz ==
 +
[[Bash gyorsbillentyűk, beírt parancsok visszahívása]]
 +
 +
[http://www.gnu.org/software/bash A '''bash''' hivatalos oldala]

A lap jelenlegi, 2006. december 12., 18:50-kori változata

Tartalomjegyzék

A .profile és .bashrc állományok

A bash shell indulása során először ellenőrzi, hogy bizonyos fájlok léteznek-e, és ha igen, akkor a bennük lévő parancsokat értelmezi és végrehajtja. Ezen fájlok között számunkra a két legfontosabb a HOME könyvtárunkban elhelyezkedő .profile és .bashrc, amelyek segítségével személyes igényeink szerint tudjuk módosítani a bash parancsértelmező viselkedését. A .profile-ban elhelyezett parancsok csak az ú.n. login shell-ekben, míg a .bashrc-ben elhelyezettek csak a nem-login shell-ekben futnak le a parancsértelmező indítása során. Login shell-t indítunk pl. egy ssh-s vagy putty-os bejelentkezés alkalmával, és nem-login shell-t indíthatunk a bash vagy az xterm parancs begépelésével. Ez utóbbiakhoz persze előbb szükségünk van egy már működő parancsértelmezőre -- tipikusan egy login shell-re.

Környezeti változók módosítása, beállítása

A bash viselkedését sok u.n. köznyezeti változó befolyásolja különböző módokon. Ezeket a változókat az export parancs segítségével változtathatjuk meg, és az echo parancs segítségével ellenőrizhetjük értéküket. Pl. a sajat_valtozom nevű környezeti változót az alábbiak szerint módosíthatjuk:

$ export sajat_valtozom=valami

Az eredményt pedig az alábbi paranccsal ellenőrizhetjük:

$ echo $sajat_valtozom
valami

(A shell változóira való hivatkozás módja: $változó-név.)

A bash által használt néhány fontosabb környezeti változó

  • A HOME nevű változó tartalmazza a saját HOME könyvtáruk elérési útját a teljes fájlrendszeren belül. (Ezt csak nagyon kivételes esetben lehet célszerű módosítanunk.)
  • A PATH nevű változó tartalmazza mindazon könyvtárak nevét, melyekben a bash keresni fogja a futtatható programokat. Ez a lista általában csak az operációs rendszer által nyújtott legfontosabb parancsokat tartalmazó könyvtárakra terjed ki:
   $ echo $PATH
   /usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin
Ha viszont szeretnénk a saját programjainkat is ugyanolyan egyszerűen elindítani (az elérési útvonal megadása nélkül), mint a rendszerparancsokat, akkor célszerű lehet ennek a változónak a módosítása. Többnyire két könytárral célszerű kiegészíteni az alapértelmezett listát: az aktuális munkakönyvtárral (.) ill. ha sok saját progrtamunk van, akkor az azokat tartalmazó pl. a közvetlenül a HOME könyvtárunk alatti bin könvtárral:
   $ export PATH=$PATH:.:$HOME/bin
Persze, ha ez a módosítás valóban indokolt, akkor az is nagyon valószínű, hogy erre minden egyes bejelentkezésünk után szükségünk lesz. Ekkor a parancsnak a minden alkalommal való újbóli begépelése helyett célszerűbb azt elhelyezni a .profile állományban.
  • A PS1 változó segítségével a promptunkat szabályozhatjuk. Az egyszerű szövegen túlmenően néhány speciális dolgot is elhelyezhetünk a promptunkban. Pl. praktikus lehet a promptban elhelyezni az aktuális könyvtárat (\w), a gép nevét (\H),esetleg az időt (\t, \T, \@ vagy \A) vagy más egyéb dolgot, melyekről a man bash paranccsal kaphatunk bővebb információt. Egy lehetséges prompt beállító parancs:
   $ export PS1="\t \H//\w> "
   15:01:54 omnibus//~> 
Ha a parancsot a parancssorból adtuk ki, annak hatását azonnal le is mérhetjük.
(A "//" és a ">" közötti '~' jelentése: jelenleg éppen a HOME könyvtárunkban vagyunk.)
Mivel az egyszer már praktikusnak talált promptot általában szeretnénk minden bejelentkezésünk idején használni, célszerű a PS1 változó módosítását is a .profile-ban elhelyezni.

Az alias parancs

A bash parancsainak működését általában kapcsolók széles skálájával lehet módosítani. A számunkra fontos kombinációk minden alkalommal való begépelése helyett az alias parancs segítségével ú.n. beceneveket használhatunk. Pl. az

$ alias ll="ls -l"

parancsot követően a bash ismerni fogja az ll parancsot. Mindannyiszor, ha leírjuk, hogy ll a bash automatikusan átfordítja azt az ls -l paranccsá.

Fájlok véletlenszerű törlése (rm), másolása (cp) ill. mozgatása (mv) esetenként végzetes hibákat okozhat. Ezen hibák többnyire megelőzhetőek a -i kapcsoló használatával. Ehhez vagy minden alkalommal be kell írnunk az ilyen parancsok mögé a kapcsolót, vagy az alias parancs segítségével módosíthatjuk a parancsok alapértelmezett viselkedését:

$ alias cp="cp -i" 

Ezen parancsot követően pl. a "cp a.txt b.txt" parancs abban az esetben, ha már korábban is létezett egy 'b.txt' nevű fájl, akkor annak az automatikus felülírása helyett (ez történne a -i kapcsoló nélkül), az "új cp" parancs meg fogja kérdezni, hogy komolyan gondoltuk-e a fájl felülírását.

A környezeti változók módosításához hasonlóan, az alias parancsot is többnyire a .profile állományban célszerű alkalmazni.

Egy példa .profile (vagy .bashrc) állomány

export PATH=$PATH:.:$HOME/bin
export PS1="\t \H//\w> "

alias ll="ls -l"
alias la="ls -a"
alias lla="ls -la"

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

alias euler="ssh euler.math.bme.hu"
alias maple='cd $HOME/working; maple'

További tájékozódáshoz

Bash gyorsbillentyűk, beírt parancsok visszahívása

A bash hivatalos oldala

Személyes eszközök