Po uruchomieniu Linuksa w pow³oce tekstowej widzimy anemiczny czarny monitor z bia³ymi literkami. To prawdziwy Linux. Musimy dzia³aæ za pomoc± klawiatury wpisuj±c polecenia.
POW£OKA czyli shell to program, który przyjmuje polecenia cz³owieka i uruchamia inne programy. Wybór rodzaju shella dla danego usera jest zawarty w pliku /etc/passwd. Przyjmujemy, ¿e pracujemy na shellu bash. Podajemy swój login np. antek i po wci¶niêciu ENTERa podajemy has³o (plus ENTER). Jeste¶my zalogowani jako antek.
Jest tak wiele rzeczy do wyja¶nienia na pocz±tku, ¿e proszê o wyrozumia³o¶æ je¿eli nie trafi³em z hierarchi± wa¿no¶ci.
Uruchamianie programów w shellu mo¿e odbywaæ siê na dwa sposoby: bez podania PE£NEJ ¦CIE¯KI DOSTÊPU do pliku inicjuj±cego lub ze ¶cie¿k±. Odpowiedzmy sobie: jak to siê dzieje, ¿e shell czasami zna PE£N¡ ¦CIE¯KÊ, a czasami nie? Otó¿ dawno, dawno temu, kto¶ wpad³ na pomys³, by zamiast za ka¿dym razem wpisywaæ pe³n± ¶cie¿kê dostêpu do pliku inicjuj±cego (aby uruchomiæ program) - podawaæ tylko nazwê pliku, a wszystkie pliki inicjuj±ce UMIESZCZAÆ W JEDNYM lub kilku ¶ci¶le wskazanych katalogach. W takich okoliczno¶ciach shell maj±c zlecenie zbudowane tylko z nazwy pliku, szuka pliku inicjuj±cego o tej samej nazwie w wybranych katalogach wskazanych poprzez zmienn± PATH.
PATH czyli ¦CIE¯KI PRZESZUKIWANIA. Domy¶lnie umieszczamy pliki inicjuj±ce w katalogach: /bin , /usr/local/bin, gdy¿ tam shell odnajdzie je bez problemu. O po³o¿eniu tych katalogów zosta³ poinformowany podczas startu systemu odczytuj±c dane zmiennej PATH. Jak dodawaæ swoje ¶cie¿ki wyszukiwania? Mo¿na na dwa sposoby:
Na czas jednej sesji (do restartu systemu lub wylogowania usera) dodajemy nowy katalog /home/antek/bin do zmiennej PATH zleceniem (jako zwyk³y user):
$ export PATH="$PATH:~/bin" . Wyja¶nienie: znaczek dolara $ oznacza zwyk³ego usera np. antek (s³u¿y do opisu, $ nie wpisuje siê w zlecenie), tylda ~ oznacza skrót do katalogu domowego usera czyli /home/antek . Aby wy¶wietliæ listê ¶cie¿ek przeszukiwania i sprawdziæ, czy nasz wpis zadzia³a³ - daj zlecenie:
$ echo $PATH
Aby ustawienia zmiennej PATH w³±cza³y siê podczas startu systemu, nale¿y dopisaæ tre¶æ zlecenia
export PATH="$PATH:~/bin" lub PATH="$PATH:~/bin" do pliku:
~/ .bash_profile (w Mandraku ten wpis ju¿ jest ;)
lub je¿eli go nie ma, to ~/bash_login
lub je¿eli ich nie ma to ~/.profile
Wyja¶nienie: kropka na pocz±tku nazwy pliku oznacza, ¿e ma artybut UKRYTY. Warto w celach edukacyjnych przejrzeæ plik ~/ bashrc oraz .bash_history z zapisem historii wydawanych poleceñ. Kilka s³ów o .bash_history tutaj.
Zmienn± ¶rodowiska PATH mo¿na tak¿e ustaliæ na sta³e poprzez modyfikacjê pliku /etc/rc.d/rc.sysinit
Tak na marginesie informacja: jako pierwszy (podczas konfiguracji basha) jest czytany plik /etc/profile, a nastêpnie wymienione powy¿ej w pkt. b. Natomiast podczas wylogowania jest odczytywany plik ~/ bash_logout . W katalogu /etc znajduje siê jeszcze plik bashrc. Do niego odwo³uj± siê pewne wpisy w pliku ~/bashrc zwyk³ych userów.
Powy¿sze wzory plików konfiguracyjnych basha s± pobrane z mojego Mandraka 9.0.
Jakie s± praktyczne zastosowania zmiennej PATH? Przypu¶æmy, ¿e w naszym Linuksie mamy program KADU dzia³aj±cy w pow³oce tekstowej. Je¿eli zosta³ zainstalowany w /home/antek/bin/.gg to uruchamianie programu bêdzie wymaga³o podania pe³nej ¶cie¿ki do pliku w katalogu /home/antek/bin/.gg . U³atwimy sobie pracê i po ustaleniu dodatkowej ¶cie¿ki w zmiennej PATH wystarczy, ¿e jako antek wpiszemy zlecenie gg (o ile gg jest nazw± pliku inicjuj±cego program).
Przypominam, ¿e aby wy¶wietliæ aktualn± listê ¶cie¿ek przeszukiwania, daj zlecenie:
$ echo $PATH
Poniewa¿ jeste¶ (jak przypuszczam) pocz±tkuj±cym mi³o¶nikiem Linuksa poznaj inny, wygodny sposób uruchamiania programów bez konieczno¶ci ustawiania zmiennej PATH. Utwórz skrypcik zleceniem touch nazwaskryptu, a nastêpnie nadaj mu w³a¶ciwe prawa zleceniem: chmod 751 nazwaskryptu .
Wyedytuj plik za pomoc± jakiego¶ edytorka (np. mcedit) i wprowad¼ poni¿sz± zawarto¶æ:
#!/bin/sh
cd /home/antek/bin/.gg;./gg
Skrypt ma w sobie dwa polecenia: przeniesienie do katalogu z plikiem gg, a nastêpnie uruchomienie pliku gg. Aby uruchomiæ skrypcik, trzeba byæ w katalogu gdzie jest ten skrypt i wydaæ zlecenie z przedrostkiem ./ np. ./nazwaskryptu
Poprawianie wygl±du shella podczas logowania za³atwi nam wpis w pliku ~/.bashrc (który dodatkowo mo¿e wspó³pracowaæ z innymi plikami konfiguracyjnymi np. /etc/bashrc). Mamy dwa spsoby wprowadzania korekt:
korekta przy pomocy znaków specjalnych zmiennej PS1
korekta przy pomocy zewnêtrznego skryptu odpalanego za pomoc± wpisu w ~/.bashrc
Proszê przyjrzeæ siê poni¿szemu plikowi ~/.bashrc (czyli w praktyce /home/antek/.bashrc - kropka oznacza, ¿e plik ma atrybut "ukryty").
# .bashrc
# User specific aliases and functions
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
PS1='ANTEK $PWD>'
./powitanie
Nas interesuj± miejsca:
if [ -f /etc/bashrc ]; then - co oznacza, ¿e domy¶lnie dane s± pobierane z ogólnego pliku /etc/bashrc
PS1='$PWD>' - dopisany przeze mnie (na koñcu pliku) wiersz zmuszaj±cy znak zachêty do umieszczania wyniku zlecenia pwd (aktualne po³o¿enie usera) lub PS1='ANTEK $PWD>' czyli wiersz zmuszaj±cy znak zachêty do dodatkowego wydrukowania na ekranie s³owa ANTEK (oraz umieszczania wyniku zlecenia pwd). Uwaga: zamiast s³owa ANTEK, mo¿na u¿yæ znak specjalny wprowadzaj±cy nazwê usera. Na s±siedniej stronie zrobi³em listê znaków specjalnych zmiennej PS1.
Dziêki dopisaniu w pliku ~/bashrc wiersza PS1='ANTEK $PWD>' uzyskamy bardzo wygodny znak zachêty, wy¶wietlany przez ca³y czas pracy w shellu. Uwaga: s³owo ANTEK bedzie wy¶wietlane tak¿e po zalogowaniu siê na roota (za pomoc± zlecenia su). Dlatego polecam w /root/bashrc dopisanie (na koñcu pliku) podobnego wiersza PS1='ROOT $PWD>'. Przyk³ad pliku /root/bashrc
./powitanie - czyli odpalenie skryptu powitanie . Uruchomienie skryptu zawdziêczamy prostemu wpisowi ./powitanie w pliku ~/bashrc (oczywi¶cie dla u³atwienia oba pliki s± w tym samym katalogu). Przypominam, ¿e skrypt ten powinien mieæ prawo do wykonania czyli np. 644 antek.antek . Uwaga: je¿eli zamontujesz partycjê /home w trybie noexec (patrz plik /etc/fstab), to system nie zdo³a uruchomiæ skryptu powitanie i nie bêdzie komunikatu :(
Budowa skryptu powitanie:
#!/bin/sh#czyli konfiguracja shella dla skryptu
echo 'JESTES NA KOMPUTERZE: '#czyli wywietlenie komunikatu JESTE¦...
cd /bin;./hostname#czyli uruchomienie zlecenia hostname (wy¶wietli siêe nazwa naszego komputera)
echo ' '#czyli jeden pusty wiersz
echo 'DZISIAJ MAMY: '
cd /bin;./date
echo ' '
echo 'sprawdzam poczte... '
mail
echo ' '
Proszê zwróciæ uwagê na znaczek ' (jest na klawiszu z cudzys³owiem). Wpis echo ' ' daje nam wolny wiersz.
Proszê zobaczyæ jakie komunikaty daje zlecenie uname : nazwa systemu, nazwa hosta, ostatnie logowania.
Przypominam, ¿e wype³niaj±c plik /etc/motd jakim¶ tekstem - uzyskasz komunikat powitalny (po zalogowaniu). Je¿eli chcesz usun±æ mo¿liwo¶æ wy¶wietlenia informacji o systemie w pliku /etc/motd, to zahaszuj w pliku /etc/rc.d/rc.S wiersz:
echo "$(/bin/uname -sr)." > /etc/motd
Wymuszone wylogowanie po ustalonym okresie bezczynno¶ci za³atwi wpis w pliku ~/.bashrc
export TMOUT=300
warto¶æ 300 oznacza czas bezczynno¶ci (ilo¶æ sekund) po jakim nast±pi wylogowanie
Je¿eli nie chcesz modyfikowaæ plików konfiguracyjnych, to mo¿esz po prostu wpisaæ do konsoli zlecenie:
export TMOUT=300
Ustawianie parametrów shella u nowego usera za³atwa zawarto¶æ katalogu /etc/skel . To z tamt±d zlecenie useradd kopiuje pliki i umieszcza w domowym katalogu nowego usera /home/user . W katalogu /etc/skel s±: .bash_logout , .bash_profile , .bashrc , .mailcap , .screenrc
Je¿eli mêczy Ciebie nadmierna ilo¶æ systemowych komunikatów ostrzegawczych (w pow³oce tekstowej), wyedytuj plik /etc/syslog.conf i usuñ wpis:
*.emerg root (komunikaty pojawi± siê na shellu roota)
*.emerg * (komunikaty pojawi± siê na shell ka¿dego usera)
Ang. emergency czyli pilne s± wa¿nym elementem bezpieczeñstwa, wiêc przemy¶l usuniêcie wpisu. Wiêcej o syslog znajdziesz na stronie pt. BHPoraz ZARZ¡DZANIE.
Podczas kompilacji instalowanego programu mo¿esz spotkaæ siê z problemem nieumiejêtno¶ci odnalezienia bibliotek po³o¿onych w nietypowych katalogach. W takich okoliczno¶ciach zwiêksz liczbê katalogów, które przeszukiwane s± podczas kompilacji. Jako root wyedytuj plik /etc/ld.so.conf zleceniem mcedit ld.so.conf i dopisz nowe katalogi. Po zapisaniu zmian daj zlecenie ldconfig
Tworzenie skróconych wersji czêsto u¿ywanych, rozbudowanych poleceñ. Aliasy to mechanizm pow³oki, który umo¿liwia tworzenie skróconych wersji poleceñ. Alias tworzymy wpisuj±c w pow³oce s³owo alias , wygl±d "skróconej wersji zlecenia" , znak równo¶ci= , zlecenie oryginalne (np. z parametrami) w apostrofach, czyli:
alias ll='ls -la' wprowadzaj±cy skrócon± wersjê (ll) listowania katalogu (ls -la) . Taki alias ma krótk± trwa³o¶æ ¿ycia - do czasu wylogowania siê.
Samo zlecenie alias (bez argumentów) wy¶wietla aktualn± listê aliasów.
Zlecenie unalias nazwaaliasu usuwa dany alias, natomiast unalias -a usuwa wszystkie aliasy.
Aby trwale skompletowaæ i uruchamiaæ aliasy podczas logowania - nale¿y utworzyæ zwyk³y plik tekstowy pod nazw± /home/user/.alias i wpisaæ wiersze z aliasami. Nastêpnie nale¿y nale¿y wpisaæ do /home/user/.bashrc wiersz: ./alias . Tyle mówia podrêczniki - mi nie uda³o siê uruchomiæ w ten sposób aliasów...
¼ród³o http://gorzow-wlkp.pl/