Next Previous Contents

4. 軟件設置

下列設置檔必需加以設定:/etc/profile /etc/bashrc .bashrc .bashrc .bash_profile .bash_logout .inputrc .less .lessrc .xinitrc .fvwmrc .fvwm2rc95 .Xmodmap .Xmodmap.num .Xdefaults .jedrc .abbrevs.sl .joerc .emacs . 在完成系統設定以前不要增添用戶;需要將點文檔(dot files)放入/etc/skel。

4.1 bash(1)

有人認為,這個軟件是除內核之外最重要的軟件。要使bash適合個人口味, 可修改下列文檔:

下文例舉對這些文檔的修改。首先,最重要的文檔是:/etc/profile。以下几節中可以看到, 修改這個文檔可以設定 Linux 的各種功能。


# /etc/profile

# System wide environment and startup programs
# --整個系統環境和啟動程式
#
# Functions and aliases go in /etc/bashrc
# --/etc/bashhrc中包含功能和別名
#
# This file sets up the following features and programs:
# --這個文檔設定下列功能:
#
#   o path --路徑
#   o prompts  --提示符
#   o a few environment variables  --几個環境變數
#   o colour ls --ls 的顏色
#   o less behaviour    --設定less的功能 
#   o rxvt
#
# Users can override these settings and/or add others in their
# $HOME/.bash_profile
# 用戶可在 $HOME/.bash_profile 中取消這些設定和(或)增加其他設定


# set a decent path
# 設定可行的路徑

PATH="$PATH:/usr/X11R6/bin:$HOME/bin:."

# notify the user: login or non-login shell. If login, the prompt is
# coloured in blue; otherwise in magenta. Root's prompt is red.
# See the Colour-ls mini  HOWTO  for an explanation of the escape codes.
# 通知用戶:登錄(login)或不登錄(non-login)的外圍程序(shell)。
# 如果登錄,則提示符為藍色,否則為紫紅色。Root的提示符為紅色。
# 參閱Colour-ls mini  HOWTO 中對換碼符(escape codes)的使用解釋。

USER=`whoami`
if [ $LOGNAME = $USER ] ; then
  COLOUR=44  # blue --藍色
else
  COLOUR=45  # magenta --紫紅色
fi

if [ $USER = 'root' ] ; then
  COLOUR=41  # red --紅色
  PATH="$PATH:/usr/local/bin"
fi

ESC="\033"
PROMPT='\h'    # hostname --主機名
STYLE=';1m'    # bold --粗體
# PROMPT='\u'  # username --用戶名
# STYLE='m'    # plain --一般字體
PS1="\[$ESC[$COLOUR;37$STYLE\]$PROMPT:\[$ESC[37;40$STYLE\]\w\\$ "
PS2="> "

# no core dumps, please
# 請勿轉儲內存信息

ulimit -c 0

# set umask
# 設定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"  # sendmail, postfix, smail 
# MAIL="$HOME/Mailbox"        # qmail
NNTPSERVER=news.myisp.it      # put your own here 
VISUAL=jed
EDITOR=jed
HOSTNAME=`/bin/hostname`
HISTSIZE=1000
HISTFILESIZE=1000
export PATH PS1 PS2 USER LOGNAME MAIL NNTPSERVER
export VISUAL EDITOR HOSTNAME HISTSIZE HISTFILESIZE

# enable colour ls
# 設定ls的顏色

eval `dircolors /etc/DIR_COLORS -b`
export LS_OPTIONS='-s -F -T 0 --color=yes'

# customize less
# 設定less

LESS='-M-Q'
LESSEDIT="%E ?lt+%lt. %f"
LESSOPEN="| lesspipe.sh %s"
LESSCHARDEF=8bcccbcc13b.4b95.33b. # show colours in ls -l | less
# LESSCHARSET=latin1
PAGER=less
export LESS LESSEDIT LESSOPEN VISUAL LESSCHARDEF

# fix the backspace key in rxvt/xterm
# 設定rxvt/xterm中的退後鍵

CTRL_H="\010"
NULL_STRING=" $CTRL_H" # space + backspace
if [ "$NULL_STRING" != "" ] ; then
  stty erase ^?
else
  stty erase ^H
fi

# set xterm title: full path
case $TERM in
  xterm*)
    PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD}\007"'
    ;;
esac

for i in /etc/profile.d/*.sh ; do
  if [ -x $i ]; then
    . $i # beware - variables and aliases might get overridden!
  fi
done

# call fortune, if available  --如有fortune
if [ -x /usr/games/fortune ] ; then
  echo ; /usr/games/fortune ; echo
fi

此處為 /etc/bashrc:


# /etc/bashrc

# System wide functions and aliases
# 整個系統的功能和別名
#
# Environment stuff goes in /etc/profile
# /etc/profile中的環境參數
#
# Insert PS1 definitions here if you experience problems.
# 如有問題可將PS1的參數放在此處

export CDPATH="$CDPATH:

# common aliases --共同別名

alias cp='cp -i'
alias l=less
alias ls="ls $LS_OPTIONS"
alias mv='mv -i'
alias rm='rm -i'
alias rmbk='/bin/rm -f .*
alias u='cd ..'
alias which="type -path"
alias x=startx

# A few useful functions --几項有用的功能

c ()    # cd to the new directory and list its contents
{
  cd $1 ; ls
}

inst()  # Install a .tar.gz archive in current directory --在當前目錄中建立.tar.gz儲存庫
{
  if [ $# != 0 ]; then tar zxvf $1; fi
}

cz()    # List the contents of a .zip archive --列出.zip的內容
{
  if [ $# != 0 ]; then unzip -l $*; fi
}

ctgz()  # List the contents of a .tar.gz archive --列出.tar.gz的內容
{
  for file in $* ; do
    tar ztf ${file}
  done
}

tgz()   # Create a .tgz archive a la zip. --建立壓縮檔.tgz
{
  if [ $# != 0 ]; then
    name=$1.tar; shift; tar -rvf ${name} $* ; gzip -9 ${name}
  fi
}

crpm()  # list information on an .rpm file --列出.rpm檔的內容
{
  if [ $# != 0 ]; then rpm -qil $1 | less; fi
}

此處為 .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
# 需要以下設定,以便通知處於不登錄(non-login)外圍程序(shell)中的用戶

if [ "$GET_PS1" = "" ] ; then
  COLOUR=45; ESC="\033"; STYLE=';1m';  # STYLE='m'
  USER=`whoami`
  export PS1="\[$ESC[$COLOUR;37$STYLE\]$USER:\[$ESC[37;40$STYLE\]\w\\$ "
fi

# personal aliases
# 個人別名

alias backup='tar -Mcvf /dev/fd0'
alias dial='eznet up myisp'
alias f='cd 
alias hangup='eznet down'
alias lyx='lyx -width 580 -height 450'
alias restore='tar -M -xpvf /dev/fd0'

# personal functions
# 几個個人使用的功能

xj()    # Launch xjed and a file in background --在背景啟動xjed和文檔
{
  xjed $1 &
}

此處為.bash_profile


# $HOME/.bash_profile

# User specific environment and startup programs
# 用戶特定的環境參數和啟動程式
#
# This file contains user-defined settings that override
# those in /etc/profile
# 這個文檔中存有用戶自訂的設置,可取代/etc/profile 中的數值
#
# Get aliases and functions
# 設定別名和功能
#
if [ -f  then
  GET_PS1="NO"  # don't change the prompt colour --不改變提示符的顏色
  . 
fi

# set a few `default' directories
# 設定几個“默認”目錄

export CDPATH="$CDPATH:$HOME:$HOME/text:$HOME/text/geology"

此處為 .inputrc


# $HOME/.inputrc

# key bindings
# 主要綁定

"\e[1
"\e[3
"\e[4
# (F1 .. F5) are "\e[[A" ... "\e[[E"
# (F1 .. F5) 分別為 "\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)
                                # 允許8-位元輸入(例如重音字符)譯註:用于歐洲

set convert-meta Off            # don't strip 8-bit characters
                                # 不取消8-位元字符
set output-meta On              # display 8-bit characters correctly
                                # 正確顯示8-位元字符
set horizontal-scroll-mode On   # scroll long command lines
                                # 長指令行自動翻轉
set show-all-if-ambiguous On    # after TAB is pressed
                                # 按TAB鍵

設定下列參數使 backspace 和 delete 兩鍵在xterm 和其他X11應用中運作正常:

rxvt的問題比較複雜,因為在編輯時的一些設定會影響它的功能。參看上文 /etc/profile部分。

bash(1) 和 readline(3) 的 man 說明中有更多這方面的資料。

不要以為這些設定在每種應用中都可正常運作。例如,在xterm中運行joe, 有些鍵位就不起作用;運行rxvt也有相同的問題。

4.2 ls(1)

ls可用顏色顯示目錄,突出不同種類的文檔。如上文所示,要使用這項功能,只要在 /etc/profile 增加几行內容即可。不過,這對有些版本的rxvt不起作用; 得使用 xterm 替代。看來一些老版本的rxvt有設計不全之處,以致在有些情況下無法正確使用環境參數。

Caldera版本的ls不顯示顏色,但它有一個類似的color-ls。 將以下內容加到 /etc/bashrc:

alias ls="color-ls $LS_OPTIONS"

4.3 less(1)

利用這個優越的頁面調度程序不僅能瀏覽一般文字文檔,也能觀看壓縮的 gzip 文檔和以 tar 和 zip 格式儲存的檔案文檔和 man 文檔,其設置如下:

4.4 emacs(1) 文本編輯器

由于我不太用emacs,因此心得不多。有些emacs 版本沒有預先設置顏色和語法標示。可在.emacs中增添:

(global-font-lock-mode t)
(setq font-lock-maximum-decoration t)

這只對X11有用。如需使用重音符號,可增加此行:

(standard-display-european 1)

我讓您自己從關於emacs的文件資料中尋找設定符合您的需要的方法,有時這需要几個月的時間。 點文檔產生器( 設置軟件)可以幫些忙。

4.5 joe(1) 文本編輯器

有些joe的版本不在主控台顯示顏色,並且有些特殊鍵位不起作用。解決這項問題的最快方法是:

   (譯註:原文似乎有漏)

要使特殊鍵位發生作用,只要修改.joerc.jstarrc或喜愛的仿真設定; 首先改變/usr/lib/joe中的設置文檔。利用第四部分(鍵位梆定)設定Home和 End兩鍵。

bol ^[ [ 1 
eol ^[ [ 4 

找出ESC的次序,鍵入cat,然後再鍵入特殊鍵。

4.6 jed(1) 文本編輯器

這是相當好用的編輯器:比emacs短小精悍,也宜於設定,使用方式也與其他編輯器十分類似。 我們大學的許多用戶都用jed替代VMS的系統編輯器EDT

jed的設置文檔為 .jedrc和/usr/lib/jed/lib/*;前者可從後者目錄中的jed.rc修改而得。

4.7 pine(1) 郵件閱讀器

修改/usr/lib/pine.conf中涉及整個系統的設置,特別注意: user-domainsmtp-servernntp-server。同時注意 inbox-path取決于使用何種 MTA:如使用 sendmailpostfix,則為 var/spool/mail/$USER;如使用 Qmail,則為 /home/$USER/Mailbox (但 root 使用 /usr/lib/pine.conf)。

4.8 minicom(1)

除非 root 修改影響整個系統的設置,否則用戶無法使用 minicom。記住修改。

4.9 efax(1) 軟件

可能這是一套最容易收發傳真(fax)的軟件。只要修改 /usr/bin/fax 內的指令即可;修改不難,但有些小地方卻需注意:

完成這項設置後,還要設置几項使用者的權限設定,這樣非 root 的使用者才能收發傳真。首先要使 /var/lock 和 /var/spool/fax 成為可寫目錄。要完成這項工作, 不妨設立 faxusers 群組,將使用者加入其中,然後以下列指令改變屬性:

 chmod g+w /var/spool/fax

4.10 Ghostscript

這個有用的軟件有點小問題。因為美國的出口限制,pdf2ps 不能在加密的 .pdf 文檔上使用。解決辦法是將瀏覽器接上 http://www.ozemail.com.au/, 把 pdf_sec.ps 文檔取代 Ghostscript 中的同名文檔即可。

4.11 TeX 的使用

假設 Linux 機上已安裝了LeTeX。

4.12 避免PPP的問題

目前 Linux 的內核幾乎都已編入了 PPP + TCP/IP 功能,設定了回送地址(loopback)和正確安裝了pppd軟件和作為suid root。當然,ISP 得支持PPP。 目前有兩種方式可使 PPP 正常運作:(a)手動設定;和(b)利用一個程式自動設定。不論採用何種方式,均請收集下列資料:

手動設置是件單調無聊、十分乏味的事。雖然涉及的工作無非是修改文檔和編輯腳本,並不麻煩, 但極易出錯,新手往往不敢輕易嚐試。幸好有 PPP HOWTO 可以參考。此外,也有工具可以使用,輸入上述資料,然後自動為您設置。 Gnome和KDE兩套軟件中分別包括了gnome-pppkppp兩個工具,方便安裝PPP, 令人十分感激。此外,也不妨使用在主控台上操作的工具wvdialeznet。 只要提供ISP的電話號碼、用戶姓名、密碼,就聯網上路了。它們的網頁是 http://www.worldvisions.ca/wvdialhttp://www.hwaci.com/sw/eznet,不妨試用。這兩個工具都十分好用,也需後者更方便一些。

使用eznet

首先,建立一個文檔/etc/resolv.conf,內容如下:

nameserver w.x.y.z

其中填入您使用的ISP的域名伺服器(nameserver)的地址。要利用eznet建立帳戶, 可使用下列指令:

#(譯註:原文有漏)

這會產生一個屬於root的文檔/var/eznet/eznet.conf,使用權限為600; 如要讓大家都能使用,用chmod將其改為666。利用eznet up YOUR_ISP撥號給ISP。如果數據機一直等待電話的接撥信號,無法接通,試試下列指令:

#(譯註:原文有漏)

要掛斷電話,只要發出eznet down指令。不是十分簡單嗎!

使用wvdial

wvdial的設置甚至更短。鍵入wvdialconf /etc/wvdial.conf,然後修改這個文檔使其列入用戶姓名、密碼和電話號碼。 用wvdial試撥,希望一切順利。要斷線,用 Ctrl-C即可。

4.13 POP用戶端程序

要從POP伺服器收取郵件,可使用POP用戶端程序,如fetchpopfetchmail等;後者比較先進,但需要運行sendmail。這對低檔電腦而言, 似乎是多此一舉。這些軟件可從 ftp://metalab.unc.edu/pub/ Linux /system/mail/pop得到。

設置用戶端的程式如下:

4.14 X 視窗系統 (XFree86)

設定X伺服器

歸根結底,設定X伺服器已經沒有以前那麼困難。所有版本的 Linux 現在都包括了設定X11的工具(XConfiguratorsaxXF86Setup 或至少有xf86config)。目前X伺服器的設置幾乎完全自動, 只是有少數几種視像卡可能拒絕工作。在設定X伺服器時如遭遇困難,可用下列簡單的方法解決:

這種方法一般都萬無一失,但各人的情況可能不同。X11不開始運行的多數原因是視像器的參數選擇過高。 不妨從比較低的參數開始,例如選800x600和256色,然後逐步上升。注意: 這些操作應謹慎小心,可能會損壞視像器!

數字小鍵盤

上文已經示範如何設定几個特別鍵位。如果使用Xjed,示範文檔.Xmodmap就符合需要, 但缺點是無法使用數字小鍵盤(keypad)。因此需要.Xmodmap.num另作設定:

! Definitions can be found in <X11/keysymdef.h>
! 在<X11/keysymdef.h>中可找到各項定義
keycode 77  = Num_Lock
keycode 112 = KP_Divide
keycode 63  = KP_Multiply
keycode 82  = KP_Subtract
keycode 86  = KP_Add
keycode 79  = KP_7
keycode 80  = KP_8
keycode 81  = KP_9
keycode 83  = KP_4
keycode 84  = KP_5
keycode 85  = KP_6
keycode 87  = KP_1
keycode 88  = KP_2
keycode 89  = KP_3
keycode 90  = KP_0
keycode 91  = KP_Decimal

確定/etc/X11/XF86Config中不得有下列三行:

  ServerNumLock
  Xleds
  XkbDisable

否則用#註銷。要重新使用數字小鍵盤,運行指令xmodmap .Xmodmap.num

用xdm圖像登錄

要使用圖像登錄,不妨修改/etc/inittab,使其包含下列內容:

x:5:respawn:/usr/bin/X11/xdm -nodaemon

其中5是X11的運行級別(runlevel)(S.u.S.E. 用4)。按照下列方法修改默認運行級別(通常為2或3):

id:5:initdefault:

顏色的數值設定于/etc/X11/xdm/Xserver:

:0 local /usr/X11R6/bin/X :0 -bpp 16 vt07  # first X server, 65k colours
:1 local /usr/X11R6/bin/X :1 -bpp 32 vt08  # second X server, true colour

如果已有.xinitrc,將其複製成.xsession,并運行chmod +x .xsession使其成為可執行檔。然後運行指令telinit 5,那就大功告成了。

視窗管理器

一旦X伺服器能夠無誤地工作,那就有各種組合的設置;當然,這得看用哪種視窗管理器(window manager),目前就有几十種可選。多數設置都是修改一、兩個主目錄內的文本文件(ASCII files);也有根本不需作任何修改的視窗管理器,而用一個小程式或甚至菜單來管理。

舉例如下:

簡言之,如果不在乎修改設置文檔,可選用icewmfvwm*blackbox等; 否則就選用目前常見的KDE、Gnome、WindowMaker和XFCE。

應該要有一個好的.xinitrc。舉例如下:

#!/bin/sh
# $HOME/.xinitrc

usermodmap=$HOME/.Xmodmap
xmodmap $usermodmap

xset s noblank  # turn off the screen saver -- 關閉屏幕保護軟件
xset s 300 2    # screen saver start after 5 min -- 5分鐘之後啟動屏幕保護
xset m 10 5     # set mouse acceleration -- 設定鼠標的速度

rxvt -cr green -ls -bg black -fg white -fn 7x14 \
  -geometry 80x30+57+0 &

if [ "$1" = "" ] ; then  # default
  WINMGR=wmaker
else
  WINMGR=$1
fi

$WINMGR

雖然並非必需,但將其變成可執行檔chmod +x .xinitrc

這個 .xinitrc 讓你選用視窗管理器:

$ startx startkde # or other w.m. -- 或其他視窗管理器

(不過它不適用于有些版本的 S.u.S.E.)

X11 應用軟件的默認值

找出app-defaults的所在位置(應該在/usr/X11R6/lib/X11/app-defaults)。 有几個應用軟件的設置文檔都在這個目錄內。

4.15 使用者的設置文檔

完成 Dot 文檔的編輯後,將這些設置文檔按 軟件設置的方法抄到 /etc/skel。

4.16 製作 .rpm

rpm是一種管理整套軟件的好方法,除非在特殊情況下(安全理由), 一般我都不太願意安裝.tar.gz軟件。要安裝.tar.gz軟件時,不妨將其轉換成.rpm檔, 然後再安裝;參考RPM HOWTO。此外,在使用比較新的gcc版本時,例如 egcspgcc, 不妨將下列內容加入/etc/rpmrc

optflags: i386 -O2 -mpentium

4.17 Upgrading

在機器升級時,應首先製作備份,並保存一些重要文檔,其中應包括 /etc/X11/XF86Config、/usr/bin/fax和/usr/local 中的所有文檔以及內核設置、全套/etc和/var/spool/mail中的所有郵件。

然後應該升級(極少降級)軟件版本附帶的應用軟件,和增加應用軟件。


Next Previous Contents