bash
(1)
Untuk mengubah perilaku bash
, berikut adalah berkas-berkas yang disunting:
/etc/bashrc
berisi alias dan fungsi-fungsi untuk seluruh sistem;
/etc/profile
berisi hal-hal environment dan program-program sewaktu mulai menjalankan bash untuk seluruh sistem;
$HOME/.bashrc
berisi alias dan fungsi-fungsi untuk user;
$HOME/.bash_profile
berisi hal-hal environment dan
program-program sewaktu mulai menjalankan bash untuk user;
$HOME/.bash_logout
berisi perintah-perintah yang dijalankan sewaktu logout;
$HOME/.inputrc
berisi definisi tombol dan lain-lain.
Contoh dari berkas-berkas di atas ditunjukkan di bawah ini. Pertama-tama, yang paling penting: /etc/profile
. Yang digunakan untuk mengkonfigurasi banyak hal di sistem Linux anda, seperti yang akan kita lihat berikut ini.
# /etc/profile # System wide environment and startup programs # Functions and aliases go in /etc/bashrc # This file sets the following features: # # o path # o prompts # o a few environment variables # o colour ls # o less behaviour # o keyboard settings # # Users can override these settings and/or add others in their # $HOME/.bash_profile # set a decent path echo $PATH | grep X11R6 > /dev/null if [ $? = 1 ] ; then # add entries to the path PATH="$PATH:/usr/X11R6/bin:$HOME/bin:." fi # notify the user: login or non-login shell. If login, the prompt is # coloured in blue; otherwise in magenta. Root's prompt is red. USER=`whoami` if [ $LOGNAME = $USER ] ; then COLOUR=44 else COLOUR=45 fi if [ $USER = 'root' ] ; then COLOUR=41 fi # put a real escape character instead of ^[ PS1='^[[$COLOUR;37;1m$HOSTNAME:^[[37;40;1m\w\$ ' PS2="Continue> " # no core dumps, please ulimit -c 0 # set umask if [ `id -gn` = `id -un` -a `id -u` -gt 14 ]; then umask 002 else umask 022 fi # a few variables USER=`id -un` LOGNAME=$USER MAIL="/var/spool/mail/$USER" EDITOR=jed HOSTNAME=`/bin/hostname` HISTSIZE=1000 HISTFILESIZE=1000 export PATH PS1 PS2 USER LOGNAME MAIL EDITOR HOSTNAME HISTSIZE HISTFILESIZE # enable colour ls eval `dircolors /etc/DIR_COLORS -b` export LS_OPTIONS='-F -s -T 0 --color=tty' # customize less LESS='-M-Q' LESSEDIT="%E ?lt+%lt. %f" LESSOPEN="| lesspipe.sh %s" VISUAL=jed LESSCHARSET=latin1 export LESS LESSEDIT LESSOPEN VISUAL LESSCHARSET # customise the keyboard /sbin/kbdrate -s -r 16 -d 500 for i in /etc/profile.d/*.sh ; do if [ -x $i ]; then . $i fi done
Ini adalah /etc/bashrc
:
# /etc/bashrc # System wide functions and aliases # Environment stuff goes in /etc/profile alias which="type -path" alias d="ls" alias dir="d"
This is .bashrc
:
# $HOME/.bashrc # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi # this is needed to notify the user that they are in non-login shell COLOUR=45 # put a real escape character instead of ^[ PS1='^[[$COLOUR;37m$USER:^[[37;40m\w\$ ' # aliases alias cp='cp -i' alias l=less alias lyx='lyx -width 900 -height 700' alias mv='mv -i' alias rm='rm -i' alias x=startx # A few useful functions inst() # Install a .tar.gz archive in the current directory. { gzip -dc $1 | tar xvf - } cz() # List the contents of a .zip archive. { unzip -l $* } ctgz() # List the contents of a .tar.gz archive. { for file in $* ; do gzip -dc ${file} | tar tf - done } tgz() # Create a .tgz archive a la zip. { name=$1 ; tar -cvf $1 ; shift tar -rf ${name} $* gzip -S .tgz ${name} }
Ini adalah .bash_profile
:
# $HOME/.bash_profile # User specific environment and startup programs # This file contains user-defined settings that override # those in /etc/profile # Get aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # re-get PS1 settings if [ $USER = 'root' ] ; then COLOUR=41 else COLOUR=44 fi # put a real escape character instead of ^[ PS1='^[[$COLOUR;37;1m$HOSTNAME:^[[37;40;1m\w\$ ' export PS1
Ini adalah .bash_logout
:
# $HOME/.bash_logout clear
Ini adalah .inputrc
:
# $HOME/.inputrc # key bindings "\e[1~": beginning-of-line "\e[3~": delete-char "\e[4~": end-of-line # (F1 .. F5) are "\e[[A" ... "\e[[E" "\e[[A": "info \C-m" set bell-style visible # please don't beep set meta-flag On # allow 8-bit input (i.e, accented letters) set convert-meta Off # don't strip 8-bit characters set output-meta On # display 8-bit characters correctly set horizontal-scroll-mode On set show-all-if-ambiguous On
Supaya tombol backspace dan delete dapat bekerja dengan benar di xterm
dan aplikasi-aplikasi X11 lainnya, yang berikut ini juga diperlukan:
.xinitrc
:
usermodmap=$HOME/.Xmodmap
xmodmap $usermodmap
.Xmodmap
:
keycode 22 = BackSpace
keycode 107 = Delete
akan memperbaiki console. Untuk memperbaiki xterm
:
.Xdefaults
:
xterm*VT100.Translations: #override <Key>BackSpace: string(0x7F)\n\
<Key>Delete: string(0x1b) string("[3~")\n\
<Key>Home: string(0x1b) string("[1~")\n\
<Key>End: string(0x1b) string("[4~")\n\
Ctrl<Key>Prior: string(0x1b) string("[40~")\n\
Ctrl<Key>Next: string(0x1b) string("[41~")
nxterm*VT100.Translations: #override <Key>BackSpace: string(0x7F)\n\
<Key>Delete: string(0x1b) string("[3~")\n\
<Key>Home: string(0x1b) string("[1~")\n\
<Key>End: string(0x1b) string("[4~")\n\
Ctrl<Key>Prior: string(0x1b) string("[40~")\n\
Ctrl<Key>Next: string(0x1b) string("[41~")
Info lebih lanjut di halaman-halaman 'man' dari bash
(1) dan readline
(3).
Jangan beranggapan bahwa semua aplikasi akan berjalan mulus! Jika anda menjalankan joe
di xterm
misalnya, beberapa tombol tidak bekerja; juga untuk rxvt
. Kabarnya ada masalah dengan termcap.
ls
(1)
ls
dapat menampilkan isi direktori menggunakan warna untuk menyorot jenis-jenis berkas yang berbeda. Untuk dapat menggunakan fasilitas ini, tambahkan baris-baris berikut ke /etc/profile
:
eval `dircolors /etc/DIR_COLORS -b`
export LS_OPTIONS='-F -T 0 --color=tty'
akan mengeset environment variable LS_COLORS
sehingga berisi daftar warna yang tercantum di /etc/DIR_COLORS
. Catatan: jangan bertanya mengapa, tetapi hal ini tidak bekerja dengan beberapa versi dari rxvt
; gunakanlah xterm
sebagai pengganti. Sepertinya rxvt
mengandung bug yang mencegahnya untuk mengambil variabel-variabel environment dengan benar dalam keadaan-keadaan tertentu.
less
(1)
Dengan menggunakan program bagus ini anda bukan saja bisa melihat isi berkas teks, tetapi juga yang dipadatkan dengan gzip, tar dan zip, halaman-halaman 'man', dan sebagainya. Konfigurasinya meliputi beberapa langkah:
.lesskey
di home direktori anda:
^[[A back-line
^[[B forw-line
^[[C right-scroll
^[[D left-scroll
^[OA back-line
^[OB forw-line
^[OC right-scroll
^[OD left-scroll
^[[6~ forw-scroll
^[[5~ back-scroll
^[[1~ goto-line
^[[4~ goto-end
^[[7~ goto-line
^[[8~ goto-end
kemudian jalankan perintah lesskey
yang akan membuat berkas biner .less
berisi definisi tombol.
/usr/bin/lesspipe.sh
:
#!/bin/sh # This is a preprocessor for 'less'. It is used when this environment # variable is set: LESSOPEN="|lesspipe.sh %s" lesspipe() { case "$1" in *.tar) tar tf $1 2>/dev/null ;; # View contents of .tar and .tgz files *.tgz|*.tar.gz|*.tar.Z|*.tar.z) tar ztf $1 2>/dev/null ;; *.Z|*.z|*.gz) gzip -dc $1 2>/dev/null ;; # View compressed files correctly *.zip) unzip -l $1 2>/dev/null ;; # View archives *.arj) unarj -l $1 2>/dev/null ;; *.rpm) rpm -q -p -i -l $1 2>/dev/null ;; *.1|*.2|*.3|*.4|*.5|*.6|*.7|*.8|*.9|*.n|*.man) FILE=`file -L $1` FILE=`echo $FILE | cut -d ' ' -f 2` if [ "$FILE" = "troff" ]; then groff -s -p -t -e -Tascii -mandoc $1 fi ;; *) FILE=`file -L $1` ; # Check to see if binary FILE1=`echo $FILE | cut -d ' ' -f 2` FILE2=`echo $FILE | cut -d ' ' -f 3` if [ "$FILE1" = "Linux/i386" -o "$FILE2" = "Linux/i386" \ -o "$FILE1" = "ELF" -o "$FILE2" = "ELF" ]; then strings $1 fi ;; esac } lesspipe $1
chmod 755 lesspipe.sh
.
/etc/profile
:
LESS="-M-Q" # long prompt, silent
LESSEDIT="%E ?lt+%lt. %f" # edit top line
LESSOPEN="| lesspipe.sh %s" # filter
VISUAL=jed # default editor---insert your favourite
LESSCHARSET=latin1 # display accented letters if needed
export LESS LESSEDIT LESSOPEN VISUAL LESSCHARSET
Variabel LESSCHARSET
di atas dikarenakan penulis tinggal di Itali dan penulis berencana menggunakan ISO 8859/1 character set. Jika anda tidak akan menggunakannya sebaiknya jangan didefinisikan.
emacs
(1)
Beberapa distribusi emacs
tidak dikonfigurasi untuk menggunakan warna dan penyorotan sintaks (syntax highlighting). Tambahkan di .emacs
:
(global-font-lock-mode t)
(setq font-lock-maximum-decoration t)
Ini hanya bekerja di X11. Silakan membaca dokumentasi emacs
untuk mengkonfigurasi penuh sesuai keinginan anda (kemungkinan bisa memakan waktu berbulan-bulan).
joe
(1)
Periksalah di /usr/bin/
apakah jmacs
, jstar
, and jpico
adalah symlinks (symbolic links) ke joe
atau merupakan berkas-berkas biner sendiri; dalam hal yang terakhir, anda dapat mengubahnya ke symlinks untuk menghemat ruang harddisk:
~# cd /usr/bin
/usr/bin# ln -sf joe jmacs ; ln -sf joe jstar ; ln -sf joe jpico
Kemudian, anda tinggal menyalin berkas /usr/lib/joe/joerc
ke direktori home sebagai .joerc
dan menyuntingnya.
jed
Ini adalah editor favorit penulis, jed
mengerjakan apa yang penulis butuhkan, lebih kecil dan lebih mudah dikonfigurasi daripada emacs
, dan menurut hemat penulis mengemulasikan editor lain lebih baik.
Banyak pengguna di universitas penulis ingin jed
supaya mengemulasikan EDT
, editor sistem VMS.
Berkas-berkas konfigurasinya adalah .jedrc
and /usr/lib/jed/lib/*
; yang pertama bisa dicontoh dari jed.rc
di direktori yang terakhir disebut.
jed
menggunakan tombol-tombol dengan benar, buatlah
/usr/lib/jed/lib/defaults.sl
yang hanya berisi:
() = evalfile("linux");
/usr/lib/jed/lib/linux.sl
; hilangkan komentar dari baris Info_Directory = "/usr/info";
dan tambahkan /bin/mail
setelah UCB_Mailer =
;
jed
agar mengemulasikan EDT
(atau editor lain) tidak sulit: anda cukup mengubah beberapa baris di .jedrc
.
Jika anda ingin menggunakan `+' di numeric keypad untuk menghapus sebuah kata (bukan satu karakter), tambahkan di .jedrc
:
unsetkey("\eOl");
unsetkey("\eOP\eOl");
setkey("edt_wdel", "\eOl");
setkey("edt_uwdel", "\eOP\eOl");
setelah baris () = evalfile("edt");
.
xjed
menggunakan numeric keypad untuk emulasi EDT
membutuhkan beberapa baris berikut di .Xmodmap
:
keycode 77 = KP_F1
keycode 112 = KP_F2
keycode 63 = KP_F3
keycode 82 = KP_F4
keycode 86 = KP_Separator
Selanjutnya, pastikan /etc/X11/XF86Config
mengandung baris-baris berikut:
# ServerNumLock # harus dibuat menjadi komentar dengan tanda # di depan
XkbDisable
Hal ini berlaku untuk XFree 3.2. Kecuali anda menggunakan keyboard standar Amerika, ketahuilah bahwa ``XkbDisable'' mengakibatkan beberapa masalah. Anda akan tahu sendiri nantinya.
xjed
dilakukan dengan menambahkan baris-baris berikut di .Xdefaults
:
xjed*Geometry: 80x32+150+50
xjed*font: 10x20
xjed*background: midnight blue
Info lebih lanjut di xjed.doc, yang disertakan di paketnya.
Penulis beranggapan anda memiliki distribusi TeTeX. Beberapa hal:
/usr/lib/texmf/texmf/tex/generic/config/language.dat
, kemudian:
~# texconfig init ; texconfig hyphen
/usr/lib/texmf/texmf/tex/latex/
jalankan perintah texhash
supaya TeTeX mengenali paket baru tersebut.
dvips
, berkas yang perlu diubah adalah
/usr/lib/texmf/texmf/dvips/config/config.ps
. Ketahuilah bahwa
kolom-kolom mengenai resolusi default juga mempegaruhi perilaku xdvi
;
jika anda tidak ingin program tersebut membuat fonts setiap kali dijalankan,
mungkin bisa membantu jika ditambahkan yang berikut ini di .Xdefault
:
XDvi*mfmode:
Penulis beranggapan bahwa kernel anda sudah memliki dukungan PPP dan TCP/IP di dalamnya, menggunakan loopback, dan anda sudah memasang paket pppd
dengan benar. (Syarat-syarat tersebut biasanya sudah terpasang secara default). Ada dua cara untuk menggunakan PPP: a) konfigurasi manual, dan b) menggunakan program yang menjalankannya secara otomatis. Pertama, manual.
Misalkan data-data dari ISP anda sbb:
Untuk konfigurasi manual koneksi PPP, lakukan:
/usr/local/bin/ppp-on
berikut, yang akan digunakan untuk membuat koneksi ke ISP anda:
#!/bin/sh
# ppp-on: script to connect to an ISP
INIT=ATX3 # tergantung modem anda, bisa juga ATZ
PHONE=1234567
/usr/sbin/pppd connect "/usr/sbin/chat '' $INIT OK ATDP$PHONE \
CONNECT '' " user John
kemudian buatlah menjadi executable dengan chmod 755 /usr/local/bin/ppp-on
. Jika ISP anda tidak menggunakan protokol PAP, anda bisa menggunakan script berikut:
#!/bin/sh
# ppp-on: script to connect to an ISP
INIT=atx3 # tergantung modem anda, bisa juga ATZ
PHONE=1234567
/usr/sbin/pppd connect "/usr/sbin/chat '' $INIT OK ATDT$PHONE \
CONNECT '' 'ogin' John 'word' _Loo%ny ''" /dev/modem 38400 \
modem defaultroute
/usr/local/bin/ppp-off
berikut, yang digunakan untuk memutuskan hubungan ppp:
#!/bin/sh
# ppp-off
DEVICE=ppp0
if [ -r /var/run/$DEVICE.pid ]; then
kill -INT `cat /var/run/$DEVICE.pid`
if [ ! "$?" = "0" ]; then
echo "removing stale $DEVICE pid file."
rm -f /var/run/$DEVICE.pid ; exit 1
fi
echo "$DEVICE link terminated" ; exit 0
fi
# link not active
echo "$DEVICE link is not active" ; exit 1
kemudian buatlah menjadi executable dengan chmod 755 /usr/local/bin/ppp-off
.
/etc/ppp/options
:
# /etc/ppp/options
/dev/modem
38400
lock
crtscts
modem
asyncmap 0
remotename www.supernet.edu
defaultroute
/etc/ppp/pap-secrets
:
# /etc/ppp/pap-secrets
# username remotehost secret
John www.supernet.edu _Loo%ny
/etc/resolv.conf
:
# /etc/resolv.conf
search supernet.edu
nameserver 123.231.112.111
/etc/sendmail.cf
. Carilah baris yang dimulai dengan DS
, dan buatlah menyerupai:
DSmbox.supernet.edu
Fuih! Jika anda beruntung, semestinya sudah bisa bekerja. Jika tidak, bersiap-siaplah mempelajari PPP-HOWTO.
Sudah cukup dengan konfigurasi manual. Ada paket bagus yang mengotomatisasi hal-hal di atas bernama ezppp
dan bisa didapat dari
http://www.serv.net/~cameron/ezppp/index.html
.
Untuk mengambil mail-mail anda dari sebuah server POP, gunakan program/klien POP seperti fetchpop
atau fetchmail
. Yang terakhir mungkin satu-satunya pilihan jika server POP ISP anda mempunyai masalah dengan perintah LAST.
Untuk mengkonfigurasi klien-klien tersebut:
fetchpop
: pertama kali dijalankan anda akan ditanyai berbagai pertanyaan. Anda tinggal menjawab pertanyaan-pertanyaan tersebut dan sudah beres.
fetchmail
: pergunakan contoh berikut untuk .fetchmailrc
:
# $HOME/.fetchmailrc
poll mbox.supernet.edu with protocol pop3;
user john there with password _Loo%ny is john here
mda "/usr/bin/procmail -f fetchmail"
Baris terakhir mungkin tidak dibutuhkan. Anda harus mengeset permission berkas ini dengan chmod 600 .fetchmailrc
, jika tidak fetchmail
tidak akan bekerja.
Setelah X bekerja (video card yang benar, dll.), ada banyak kemungkinan untuk konfigurasi; tergantung pada window manager yang anda gunakan. Pada dasarnya, anda menyunting berkas-berkas ASCII di direktori home anda. Untuk window managernya:
/etc/X11/fvwm/system.fvwmrc
sebagai
$HOME/.fvwmrc
, lihat-lihatlah isinya dan mulailah bereksperimen. Berkas system.fvwmrc
contoh ini menurut penulis sedikit terlalu sederhana dan tidak menunjukkan semua kemampuan fvwm
.
/etc/X11/fvwm95-2/fvwm2rc95
sebagai
$HOME/.fvwm2rc95
, kemudian suntinglah. Contohnya lumayan bagus.
/etc/X11/TheNextLevel/.*
ke direktori home anda, lihat-lihatlah isinya dengan baik, kemudian cobalah mengkonfigurasi sedikit-sedikit. Yang pertama kali seharusnya dilihat adalah .fvwm2rc.defines
.
Sebagai tambahan, jangan lupa untuk membuat .xinitrc
. Contoh:
#!/bin/sh
# $HOME/.xinitrc
# set a few keys correctly
usermodmap=$HOME/.Xmodmap
xmodmap $usermodmap
xset s noblank # turn off the screen saver
xset s 300 2 # screen saver start after 5 min
xsetroot -solid "medium blue" &
# rxvt saves memory, but has a few bugs:
# - home and end keys are not recognised;
# - backspace and delete don't work as in console;
# - colours are not properly inherited by the environment;
# - problems with the environment in general;
# xterm is therefore better in many cases. However, rxvt is best
# for running some colour apps like mc.
xterm -ls -bg black -fg white -sb -sl 500 -j -ls -fn 10x20 -fb 10x20bold \
-title "Color xterm" -geometry 80x25+150+0 &
fvwm95-2
Menurut pengalaman penulis, jika anda membutuhkan Fortran, alternatif yang baik untuk g77
adalah penerjemah Fortran ke C f2c
dan yaf77
sebagai front-end.
Dapatkan yaf77
dari
ftp://sunsite.unc.edu/pub/Linux/devel/languages/fortran/yaf77-1.4.tgz
dan mirror-mirrornya.
Penulis menganjurkan supaya pengguna baru sudah memiliki berkas-berkas konfigurasi yang siap digunakan ketika mereka pertama kali login.
Letakkan berkas-berkas berikut di bawah /etc/skel/
: bashrc, bash_profile, bash_logout, inputrc, less, xinitrc, fvwmrc,
fvwm2rc95, Xmodmap, Xdefaults, jedrc, joerc, emacs
.
(Catatan: karena masalah sewaktu mem-format dokumen ini, penulis terpaksa menghilangkan tanda titik (`.') di awal nama berkas-berkas di atas)
Ketahuilah bahwa .pinerc
tidak bisa sepenuhnya dikonfigurasi; pastikan bahwa minimal user-domain
, smtp-server
, and nntp-server
terdefinisi dengan benar.