teejuht
1. Sissejuhatus
2. RunLevels
3. RunLevelite vahel liikumine
4. Kokkuvõtteks
OS Linux'i nagu vist igasuguse teise OS'i töö mõistmiseks on vaja kindlasti aru saada mida ja kuidas OS käivitamisel teeb või teha võiks. Järgneb jutustus sellest mis toimub, millised faile loetakse ja programme (sh. nn. scripte) täidetakse peale arvuti voolu alla lülitamist kuni selle ajani mil kasutajal on võimalik end nö. sisse logida. Kirjeldus eeldab, et üles bootimine toimub normaalselt; see eeldab, et viimati tehti korralikult 'shutdown'.
Järgnevast esitusest arusaamine eeldab, et tunnete 'bash shell' script'i. Toodud scriptid mis enamjaolt on peale distributsiooni installatsiooni olemas on tavaliselt selles nö. keeles. Tõepoolest, võtke väike aeg ja uurige shellis programmeerimist:
- tingimuste esitamine (if, case, test)
- I/O (input/output) ümbersuunamine
- protsesside tagaplaanil ja esiplaanil jooksutamine
- ....
Ilmselt ei maksa hakata väga neid vaikimisi scriptide järjekordi muutma, kuid väikesi muutusi võib ikka teha. Muuses, Slackware ja RedHati erinevus ongi paljuski selles kuidas asetsevad need kõnealused rc (run command) scriptid.
On kaks unix'i suunda System V ja BSD: RedHat on esimese ja Slackware teise moodi. Niisiis kõik kõnealused failid leiate kataloogist /etc, seal all on ka muid olulisi konfiguratsiooni faile.
Osa inimesi vaidlevad kumb on parem, objektiivselt on võimalik väita vist vaid seda, et Slack'il on vähem konf faile. Teine erinevus on tarkvara levitamine:
RedHat'i puhul on seda kombeks teha nn. .rpm (RedHat Package Manager) failidena mida pole vaja kompilleerida st. need on binary'd. Peale selle saab töötava RedHat'i puhul kindlaks teha millise programmi juurde ükskõik milline fail kuulub. Puudus on selles, et kui midagi mitte .rpm asi installeerida, siis võib see põhjustada teatud segadust (aga see kõik võib olla ka hoopis mitte nii, sest ma ei ole RedHati'ga palju tegelenud).
Slackware puhul on olemas ka Package Manager - pkgtool - kuid vähem elaboraatsem kui RedHati oma (pkgtool'ile vastavad nn. .tgz failid mis on struktuurselt kokku pakitud binarid (tar zxvf ...) ja tegelikult on kogu distributsioon esitatud selles vormis). Slack'i puhul peeakse tavaliselt normaalseks tarkvara lisamisel see kohapeal kompilleerida ja siis installeerida. See on keerulisem, 25 % (kuidas kellelegi :) tõenäosust, et tarkvara ei õnnestugi installeerida ja kui õnnestub, siis süsteem kui tervik võib tulla suhteliselt ebastabilsem kui sama tarkvaraga RedHat. Aga mis on oluline: huvitav on ja tihtipeale on tarkvara uuemad verisioonid saadaval vaid nö. source'dena ehk kujul mida on vaja tingimata kompilleerida.
Loomulikult on ka vastupidiseid näiteid: autorid ei soovi kasutajatele
näidata programmide lähtetekste ja levitavaid nö. pre-compiled
binary'eid. See pole aga kooskõlas Linux'i kui vabatarkvara ideoloogiaga.
Ja põhjenduseks sellele miks eelistatakse levitada source on see,
et üks ja sama source sobib erinevate binaryte valmistamiseks: produkt
võib olla nt. x86 protsessori ja Linux'i ELF library jaoks, aga
temast võib kompilleerida hoopis ALPHA arhitektuuriga arvuti
jaoks binary vms. Olgu öeldud, et igal protsessoril on talle iseloomulikud
käsud ja sellepärast on erinevatele arvutitele vaja erinevaid
binarey'd (x86 seeria protsessorid pole mitte ainukesed ja kõige
paremad, kuigi mina isiklikult pole muid kasutanud; aga tegelikult ma ei
teagi mis raua peal nt. madli.ut.ee jookseb :).
Linux võib peale voolu sisselülitamist jõuda välja erinevatesse seisudesse. Need 'erinevad seisud' erinevad üksteisest selle poolest
- millised programmid või daemonid ehk vaimud töötavad
- kas kasutajad saavad sisse logida
- millised failisüsteemid on külge monteeritud
Tavaliselt jõuab linux kokkuleppeliselt kolmandaks nimetatud runlevelisse ja kogu tegevus toimub selles.
Runlevelit on võimalik muuta: näiteks saab vajadusel kolmandast levelist minna esimesse ja sealt tagasi kolmandasse.
Nagu üteldud, iga RunLeveliga kaasneb teatud erinev tase süsteemi funktsionaalsust:
0: halt
sellele tasemele minek teostab süsteemi töö peatamise
(halt) (ilmselt ei saa 0'ndas levelis olles käske anda - reset või
power nupp aitavad)
1: single user mode
sellel taemel saab nagu nimi ütleb root toimetada aga kasutajaid
sisse logida ei lubata.
2: ???
3: ???
4: ???
5: ???
6: reboot
Minnes kuulendale runlevelile reeb süsteem reboodi.
Nagu näha (või ega väga ei ole tegelikult) on lugu selline, et kui süsteem läheb nt. kolmandale tasemele, siis see ei tähenda, nagu ta peaks läbima enne 0, 1, 2 taseme.
Olemas on veel nö. level S (Startup) mis läbitakse alati arvuti käivitmisel.
Et süsteem saaks minna mingisse levelisse peab ta eelnevalt täitma (st. käivitama teatud programmid, midagi ära tegema) teatud scriptid.
Seda millised scriptid kunas täita on kirjas failis /etc/inittab
See on selline püha fail kust kõikide pragrammide isa init
peale kerneli laabimist vaatab mis edasi teha. Arvuti tööd juhib/kontrollib
programm init (muuseas tema PID on alati 1).
Ja init ei võta sõna enne kuni ta pole juhtunud ühte
järgnevast:
- mõni tema enda poolt vahetult käivitatud programm pole
otsa lõppend (nt. getty) ja kui on siis käivitad selle uuesti
(kui see sünnib üle 10 korra 2 minuti jooksul, siis ta vaatab
selle kui veale ja ei pööra sellele tähelepanu 5 minutit)
- on signaal toite kadumisest (normaalselt tuleb see UPS'ilt)
- käsuga telinit soovitakse vahetada runlevelit
Ja siin on tüüpiline /etc/inittab
Enamus on välja kommenteeritud (#).
Olgu konkreetsuse mõttes olukord selline, et viimane arvutiga
töö lõpetamine toimus korralikult, st. viimane antud käsk
oli nt. 'shutdown'. Ja nagu inittabist näha minnakse levelile 3 (defaultlevel).
Nüüd võib ülevalt alla näpuga järge ajama:
täidetakse kõik scriptid kus on ees muuhulgas arv 3, joonisel
on vastavad read ka värvitud siniseks:
# Default runlevel. (võiks
ka mõne muu selleks panna)
id:3:initdefault:
# System initialization (runs
when system boots; rc.S täidetakse alati bootimisel;
# täidetakse ka siis,
kui minnakse esimesele runlevelile).
si:S:sysinit:/etc/rc.d/rc.S
# Script to run when going single
user (runlevel 1).
su:1S:wait:/etc/rc.d/rc.K
# Script to run when going multi
user.(see täidetakse bootimisel järgmisena peale rc.S'i)
rc:2345:wait:/etc/rc.d/rc.M
# What to do at the "Three Finger
Salute". näidatakse mis teha kui kasutaja vajutab, kui väljakommenteerida
siis nii
#rebootida ei saa :(
ca::ctrlaltdel:/sbin/shutdown
-t5 -rfn now
# Runlevel 0 halts the system.
(kui arvutil kästakse minna sellele levelile, siis täidetake
rc.0 script)
l0:0:wait:/etc/rc.d/rc.0
# Runlevel 6 reboots the system.
(kui arvutil kästakse minna sellele levelile, siis täidetake
rc.6 script)
l6:6:wait:/etc/rc.d/rc.6
# järgnevad kolm eeldavad
UPS'i olemasolu, et nad toimiksid
# What to do when power fails
(shutdown to single user).
pf::powerfail:/sbin/shutdown
-f +5 "THE POWER IS FAILING"
# If power is back before shutdown,
cancel the running shutdown.
pg:0123456:powerokwait:/sbin/shutdown
-c "THE POWER IS BACK"
# If power comes back in single
user mode, return to multi user mode.
ps:S:powerokwait:/sbin/init
5
# The getties in multi user
mode on consoles an serial lines.
#
# NOTE NOTE NOTE adjust this
to your getty or you will not be
#
able to login !!
#
# Note: for 'agetty' you use
linespeed, line.
# for 'getty_ps' you use line,
linespeed and also use 'gettydefs'
# näitab, et kui minnakse
runlevelitele 1, 2, 3 või 5 siis tuleb panna agetty'd sisselogimist
võimaldama
c1:1235:respawn:/sbin/agetty
38400 tty1 linux
c2:1235:respawn:/sbin/agetty
38400 tty2 linux
c3:1235:respawn:/sbin/agetty
38400 tty3 linux
c4:1235:respawn:/sbin/agetty
38400 tty4 linux
c5:1235:respawn:/sbin/agetty
38400 tty5 linux
c6:12345:respawn:/sbin/agetty
38400 tty6 linux
# Serial lines (need on terminalidelt
sisselogimiseks)
#s1:345:respawn:/sbin/getty
ttyS1 DT19200 vt100
#s2:12345:respawn:/sbin/agetty
19200 ttyS1 vt100
# Dialup lines (need on selleks,
et modemiga arvutisse sissehelistamisel arvuti vastaks)
#d1:12345:respawn:/sbin/agetty
-mt60 38400,19200,9600,2400,1200 ttyS0 vt100
#d2:12345:respawn:/sbin/agetty
-mt60 38400,19200,9600,2400,1200 ttyS1 vt100
# see on runlevel, mis käivitab
peale boodi lõpuks graafilise terminali, et sisse logida saaks
# (NB! nelijanda leveli
puhul on ka üks terminal olemas, vt paar rida üles poole!)
# Runlevel 4 used to be for
an X-window only system, until we discovered
# that it throws init into
a loop that keeps your load avg at least 1 all
# the time. Thus, there is
now one getty opened on tty6. Hopefully no one
# will notice. ;^)
# It might not be bad to have
one text console anyway, in case something
# happens to X.
x1:4:wait:/etc/rc.d/rc.4
#End of the inittab
Ja muidugi on aeg uurida neid scripte mis siin mingi runleveli puhul ära täidetakse:
/etc/rc.d/rc.S (start)
#!/bin/sh
# /etc/rc.d/rc.S: System
initialization script.
PATH=/sbin:/usr/sbin:/bin:/usr/bin
/sbin/swapon -a
/sbin/update &
# Test to see if the root partition
is read-only, like it ought to be.
# otsekohene kontroll: ihtsalt
püütakse faili luua :)
# hetkel on PWD'ks root failisüsteemi
juurikas ja see peaks olema mounditud ainult lugemiseks
# kes partitsioonil on juurikas
ja et ta on vaid lugemiseks on kirjas nt. lilo.conf'is; tegelikult kernelis
READWRITE=no
if echo -n >> "Testing filesystem
status"; then
rm -f "Testing filesystem
status"
READWRITE=yes
fi
# Check the integrity of all
filesystems
#
if [ ! $READWRITE = yes ];
then
# kui ruut on ainult lugemiseks
siis tehakse ära talle ja teistele (lähtuvalt fstab'ist ja selle
kahest viimasest
# tulbast) fsck - file system
check
/sbin/fsck -A -a
# If there was a failure,
drop into single-user mode.
if
[ $? -gt 1 ] ; then
echo
echo
echo "**************************************"
echo "fsck returned error code - REBOOT NOW!"
echo "**************************************"
echo
echo
/bin/login
fi
# Remount the root filesystem
in read-write mode
# eesti keeles: remounditakse
roodu juurikas lugemiseks/kirjutamiseks
echo "Remounting root
device with read-write enabled."
/sbin/mount -w -n
-o remount /
if
[ $? -gt 0 ] ; then
echo
echo "Attempt to remount root device as read-write failed! This is
going to"
echo "cause serious problems... "
echo
echo "If you're using the UMSDOS filesystem, you **MUST** mount the root
part
echo "read-write! You can make sure the root filesystem is getting
mounted "
echo "read-write with the 'rw' flag to Loadlin:"
echo
echo "loadlin vmlinuz root=/dev/hda1 rw (replace /dev/hda1
with your root d
echo
echo "Normal bootdisks can be made to mount a system read-write with the
rdev
echo
echo "rdev -R /dev/fd0 0"
echo
echo "You can also get into your system by using a bootkernel disk with
a com
echo "like this on the LILO prompt line: (change the root partition
name as
echo
echo "LILO: mount root=/dev/hda1 rw"
echo
echo "Please press ENTER to continue, then reboot and use one of the above
me
echo -n "get into your machine and start looking for the problem. "
read junk;
fi
else
echo "Testing filesystem
status: read-write filesystem"
if [ ! -d /DOS ]; then
# no warn for UMSDOS (kind of a bad test, but...)
cat << EOF
*** ERROR: Root partition has
already been mounted read-write. Cannot check!
For filesystem checking to work
properly, your system must initially mount
the root partition as read
only. Please modify your kernel with 'rdev' so that
it does this. If you're booting
with LILO, add a line:
read-only
to the Linux section in your /etc/lilo.conf and type 'lilo' to reinstall it.
If you boot from a kernel on
a floppy disk, put it in the drive and type:
rdev -R /dev/fd0 1
If you boot from a bootkernel disk, or with Loadlin, you can add the 'ro' flag.
This will fix the problem *AND* eliminate this annoying message. :^)
EOF
echo -n "Press ENTER
to continue. "
read junk;
fi
fi
# remove /etc/mtab* so that
mount will create it with a root entry
/bin/rm -f /etc/mtab* /etc/nologin
/etc/shutdownpid
# mount file systems in fstab
(and create an entry for /)
# but not NFS because TCP/IP
is not yet configured
/sbin/mount -avt nonfs
# Clean up temporary files on
the /var volume:
/bin/rm -f /var/run/utmp
/var/run/*.pid
# Looks like we have to create
this.
cat /dev/null > /var/run/utmp
# Configure the system clock.
# This can be changed if your
system keeps GMT.
if [ -x /sbin/clock ]; then
/sbin/clock -s
fi
# Setup the /etc/issue and /etc/motd
to reflect the current kernel level:
# THESE WIPE ANY CHANGES YOU
MAKE TO /ETC/ISSUE AND /ETC/MOTD WITH EACH
# BOOT. COMMENT THEM OUT IF
YOU WANT TO MAKE CUSTOM VERSIONS.
# siin on see koht kus login'i
ees olev tekst (üle)kirjutatakse
echo > /etc/issue
echo Welcome to Linux `/bin/uname
-a | /bin/cut -d\ -f3`. >> /etc/issue
echo >> /etc/issue
echo "`/bin/uname -a | /bin/cut
-d\ -f1,3`." > /etc/motd
Kokkuvõttes, mida tegi normaalsel juhul /rc.S:
- defineerib PATH'i
- initsaliseerid swap'i
- käivitab update (see sünkroniseerib minutis kaks korda
mälus olevaid faile kettal olevatega)
- eeldame, et root failisüsteem on read-only nagu linux ootab
ja viiakse läbi fsck talle ja teistele fstab'i kirjeldatutele
- eemaldatake teatud vanad failid
- ühendatakse külga kõik failisüsteemid mis on
näidatud /etc/fstab'is peale NFS'ide kuna võrk veel ei tööta
- seatakse süsteemi kell vastavalt CMOS'i omale
- kirjutatakse jutud /etc/issue ja /etc/motd failidesse
Kuivõrd minek on 3 ndasse runevelisse siis täidetakse järgmisena script /etc/rc.d/rc.M (multiuser)
#!/bin/sh
#
# rc.M
This file is executed by init(8) when the system is being
#
initialized for one of the "multi user" run levels (i.e.
#
levels 1 through 6). It usually does mounting of file
#
systems et al.
# Tell the viewers what's going
to happen...
echo "Going multiuser..."
/bin/setterm -blank 15
/bin/hostname `cat /etc/HOSTNAME
| cut -f1 -d .`
#if [ -x /etc/rc.d/rc.inet1
]; then
. /etc/rc.d/rc.inet1
. /etc/rc.d/rc.inet2
#else
# if [ -x /usr/sbin/syslogd
]; then
# /usr/sbin/syslogd
& # Backgrounded to avoid an ugly notice from bash-2.0
# /usr/sbin/klogd
# fi
# if [ -x /usr/sbin/lpd
]; then
# /usr/sbin/lpd
# fi
#fi
# Start crond (Dillon's crond):
# If you want cron to actually
log activity to /var/adm/cron, then change
# -l10 to -l8 to increase the
logging level.
/usr/sbin/crond -l10 >>/var/adm/cron
2>&1
# Remove stale locks and junk
files (must be done after mount -a!)
/bin/rm -f /var/spool/locks/*
/var/lock/* /var/spool/uucp/LCK..* /tmp/.X*lock /
# Remove stale hunt sockets
so the game can start.
if [ -r /tmp/hunt -o -r
/tmp/hunt.stats ]; then
echo "Removing your
stale hunt sockets from /tmp..."
/bin/rm -f /tmp/hunt*
fi
# Ensure basic filesystem permissions
sanity.
chmod 755 /
chmod 1777 /tmp /var/tmp
/sbin/ldconfig
#ipfwadm -F -a accept -m
. /etc/rc.d/rc.local
Siis tehakse järgmist:
- seatakse paika, et monitor läheb tuttu 15 minuti pärast
- seatakse paika hostname
- käivitatake kask scripti init1 ja init2 mis tegelevad võrguga,
need on toodud allpool
- käivitatakse cron (kr. k. kronos - aeg) see programm võimaldab
ettantud ajal käivitada teisi programme
- eemaldatakse veel faile
- kirjutatakse üle juurika failiõigused
- luuakse uus /etc/ld.conf.cache (libraryte asi)
käivitatakse veel scrpite (rc.local)
/etc/rc.d/rc.inet1 - selles seatakse paika võrgu interfaced ja kerneli routingu tabel
/sbin/ifconfig lo 127.0.0.1
/sbin/route add -net 127.0.0.0
netmask 255.0.0.0 lo
#/sbin/ifconfig eth0 192.168.1.1
#/sbin/route add -net 192.168.1.0
#/sbin/ifconfig eth1 192.168.2.1
#/sbin/route add -net 192.168.2.0
/etc/rc.d/rc.inet2
#!/bin/sh
# Constants.
NET="/usr/sbin"
IN_SERV="lpd"
LPSPOOL="/var/spool/lpd"
# At this point, we are ready
to talk to The World...
# Nüüd on võrk
olemas ja aeg NFS'd külge ühendada!
echo "Mounting remote file
systems..."
/sbin/mount -a -t nfs
# This may be our /usr runtime!!!
echo -n "Starting daemons:"
#järgnevalt tõmmatakse
tööle nö. vaimud; põhimõttel, et kui on olemas,
siis tööle!
# Start the SYSLOGD/Klogd daemons.
These must come first.
if [ -f ${NET}/syslogd ];
then
echo -n " syslogd"
${NET}/syslogd &
# Backgrounded to avoid an ugly notice from bash-2.0
echo -n " klogd"
${NET}/klogd
fi
# Start the SUN RPC Portmapper.
if [ -f ${NET}/rpc.portmap
]; then
echo -n " portmap"
${NET}/rpc.portmap
fi
# Start the INET SuperServer
if [ -f ${NET}/inetd ];
then
echo -n " inetd"
${NET}/inetd
else
echo "no INETD found.
INET cancelled!"
exit 1
fi
# # Start the various SUN RPC
servers.
if [ -f ${NET}/rpc.portmap
]; then
# Start the NFS server
daemons.
if [ -f ${NET}/rpc.mountd
]; then
echo
-n " mountd"
${NET}/rpc.mountd
fi
if [ -f ${NET}/rpc.nfsd
]; then
echo
-n " nfsd"
${NET}/rpc.nfsd
fi
fi
ja lõpuks /etc/rc.d/rc.local
#!/bin/sh
#
# /etc/rc.d/rc.local:
Local system initialization script.
#
# Put any local setup commands
in here:
# et uues kirja saabumisel
ta ei hakaks nö. brief'ima :) , st. kirjutama iga kirja paari rida
terminalile
biff n
# olemas on ka rc.serial
aga minul pole seda muuks vaja kui paariks reaks, sestap tõstsin
need siia
insmod serial
setserial /dev/ttyS1 irq 5
(see on sisemise modemi jaoks)
# on olemas rc.modules aga
mul pole muud kui need, selepärast tõstsin need siia
modprobe ppp
modprobe snd-audiopci
modprobe snd-pcm1-oss
sendmail -bd -C /etc/sendmail.cf.rec
alsactl restore
#modprobe ip_masq_ftp
#ipfwadm -F -p accept
-m
#ipfwadm -I -a deny
# igaks juhuks :) muuseas,
'cut' on väärt käsk, väärt tähelepanu!
hostname `cat /etc/HOSTNAME
| cut -f1 -d .`
Ja muidugi tuleb keerata tööle agetty'd: need võimaldavad kasutajatel (sh. root sisse logida). NB! getty pannakse tööle pea igal runlevelil.
c1:1235:respawn:/sbin/agetty
38400 tty1 linux
c2:1235:respawn:/sbin/agetty
38400 tty2 linux
c3:1235:respawn:/sbin/agetty
38400 tty3 linux
c4:1235:respawn:/sbin/agetty
38400 tty4 linux
c5:1235:respawn:/sbin/agetty
38400 tty5 linux
c6:12345:respawn:/sbin/agetty
38400 tty6 linux
3. RunLevelite vahel liikumine
Esmalt ütleb, et kui inittab'i muuta saab muutused aktualiseerida käsuga 'init q'. Lihtsalt init loeb uuesti läbi inittabi ja peaks reageerima vastavalt (eriti kui tegelda getty'dega)
Ühest levelist saab teise käsuga 'telinit <number>' nt.
võib anda käsu 'telinit 6' mispeale
init vaatab inittab'ist järele, et sellesse tasemese minekuks on vaja
käivitada srcipt rc.6:
NB! sellele failile on rc.0 link: üks fail
ja tehakse seda millise nimega kutsuti: $0 on keskkonnamuutuja mille väärtuseks
on käivitatud scripti jaoks scripti nimi, kaval!
#! /bin/sh
# rc.6
This file is executed by init when it goes into runlevel
#
0 (halt) or runlevel 6 (reboot). It kills all processes,
#
unmounts file systems and then either halts or reboots.
PATH=/sbin:/etc:/bin:/usr/bin
stty onlcr
case "$0" in
*0)
message="The system is halted."
command="halt"
;;
*6)
message="Rebooting."
command=reboot
;;
*)
echo "$0: call me as \"rc.0\" or \"rc.6\" please!"
exit 1
;;
esac
if [ "$1" != "fast"
]; then # shutdown did not already kill all processes
killall5
-15
killall5
-9
fi
if [ -x /usr/sbin/quotaoff
]
then
echo "Turning off quota."
/usr/sbin/quotaoff -a
fi
if [ -x /sbin/accton
]
then
echo "Turning off accounting."
/sbin/accton
fi
# Before unmounting file
systems write a reboot or halt record to wtmp.
$command -w
# Save localtime
[ -e /usr/lib/zoneinfo/localtime
] && cp /usr/lib/zoneinfo/localtime /etc
umount -a -tnfs &
echo "Turning off
swap."
swapoff -a
echo "Unmounting
local file systems."
umount -a -tnonfs
# Don't remount UMSDOS
root volumes:
if [ ! "`mount |
head -1 | cut -d ' ' -f 5`" = "umsdos" ]; then
mount
-n -o remount,ro /
fi
if [ -f /etc/power_is_failing
]; then
echo
"Turning off UPS, bye."
/sbin/powerd
-q
exit
1
fi
# Now halt or reboot.
echo "$message"
[ ! -f /etc/fastboot
] && echo "On the next boot fsck will be FORCED."
$command -f
No siin ise lugege ja saate aru mis tehakse: tapetake protsessid, ühendatakse lahti failisüsteemid, etc.
telinit oskab ka minna teistesse runlevelitesse:
nt. 0 (reboot) ja 1 (single user, muide sealt võite tagasi põõrduda
3).
Siin kirjeldatu puudutas ülesüsteemseid asju; iga kasutaja võib omada lisaks tooduile ka oma rc asju. tavaliselt on need punktiga (.) algavad failid mida 'ls -l' ei näita küll aga 'ls -la'.
mõned muud olulised failid veel
/etc/profile
see täidetakse peale iga
kasutaja sisselogimist; muuseas, kasutajal võib olla oma isiklik
.profile
Selles failis sätitakse
tavaliselt paika mitmesugused PATH'd, ja promptid:
# commands common to all logins
export OPENWINHOME=/usr/openwin
export MINICOM="-c on"
export MANPATH=/usr/local/man:/usr/man/preformat:/usr/man:/usr/X11/man:/usr/ope
export HOSTNAME="`cat /etc/HOSTNAME`"
export LESSOPEN="|lesspipe.sh
%s"
PATH="$PATH:/usr/X11/bin:/usr/andrew/bin:$OPENWINHOME/bin:/usr/local/netscape:.
LESS=-MM
# I had problems using 'eval
tset' instead of 'TERM=', but you might want to
# try it anyway. I think with
the right /etc/termcap it would work great.
# eval `tset -sQ "$TERM"`
if [ "$TERM" = "" -o "$TERM"
= "unknown" ]; then
TERM=linux
fi
#PS1='`hostname`:`pwd`# '
if [ "$SHELL" = "/bin/pdksh"
-o "$SHELL" = "/bin/ksh" ]; then
PS1="! $ "
elif [ "$SHELL" = "/bin/zsh"
]; then
PS1="%m:%~%# "
elif [ "$SHELL" = "/bin/ash"
]; then
PS1="$ "
else
PS1='\h:\w\$ '
fi
PS2='> '
ignoreeof=10
export PATH DISPLAY LESS
TERM PS1 PS2 ignoreeof
umask 022
# set up the color-ls environment
variables:
if [ "$SHELL" = "/bin/zsh" ];
then
eval `dircolors -z`
elif [ "$SHELL" = "/bin/ash"
]; then
eval `dircolors -s`
else
eval `dircolors -b`
fi
# Notify user of incoming mail.
This can be overridden in the user's
# local startup file (~/.bash.login
or whatever, depending on the shell)
biff n
loadkeys et-EVS8_1993.map
setfont -16 923.cp -u 923.uni
-m 923.EVS8_1993
export TERMINFO=/usr/lib/terminfo
no iga /etc kataloogi faili kohta juttu siinkohal ei kirjuta, eks ole jutud parem paigutada asja eenda juurde:
sendmail.cf
exports
HOSTNAME
lilo.conf
login.defs
ld.so.conf
services
named.conf
networks
fstab
host.conf
networks
ftpusers
hosts.allow
hosts.deny
fastboot
passwd
groups
skel
XF86Config
resolv.conf
hosts
inetd.conf
to name a few :)
gggg