bash
(1)
要使bash
符合个人的口味,有几个文档需要修改:
/etc/bashrc
存有整个系统的别名和功能;
/etc/profile
存有整个系统的环境参数和启动程式;
$HOME/.bashrc
存有用户的的别名和功能;
$HOME/.bash_profile
存有用户的环境参数和启动程式;
$HOME/.bash_logout
存有退出系统时的结束方式;
$HOME/.inputrc
存有主要绑定数值和其他位元数值;
下文将例举对这些文档的修改。首先,最重要的文档是:/etc/profile
。如以下几节中可以看到,一向以修改这个文档的方式来设定Linux的各种功能。
# /etc/profile # System wide environment and startup programs # --整个系统环境和启动程式 # # Functions and aliases go in /etc/bashrc # --/etc/bashhrc中的功能和别名 # # This file sets the following features: # --这个文档设定下列功能: # # o path --路径 # o prompts --提示符 # o a few environment variables --几个环境变数 # o colour ls --ls 的颜色 # o less behaviour --设定less的功能 # o keyboard settings --键盘设置 # # Users can override these settings and/or add others in their # $HOME/.bash_profile # 用户可在$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. # 通知用户:登录(login)或不登录(non-login)的外围程序(shell)。 # 如果登录,则提示符为蓝色,否则为紫红色。Root的提示符为红色。 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 # 设定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 # 设定ls的颜色 eval `dircolors /etc/DIR_COLORS -b` export LS_OPTIONS='-F -s -T 0 --color=tty' # customize less # 设定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
此处为 /etc/bashrc
:
# /etc/bashrc # System wide functions and aliases # 整个系统的功能和别名 # # Environment stuff goes in /etc/profile # /etc/profile中的环境参数 # alias which="type -path" alias d="ls" alias dir="d"
此处为 .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)中的用户 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} }
此处为.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 ~/.bashrc ]; then . ~/.bashrc fi # re-get PS1 settings # 重新设定PS1数值 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
此处为 .bash_logout
:
# $HOME/.bash_logout clear
此处为 .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" # (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-位元输入(例如重音字符)译注:用于欧洲 # 文字或GB码及Big5码) 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 set show-all-if-ambiguous On
设定下列参数使 backspace 和 delete 两键在xterm
和其他X11应用中运作正常:
.xinitrc
中添加:
usermodmap=$HOME/.Xmodmap
xmodmap $usermodmap
.Xmodmap
中添加:
keycode 22 = BackSpace
keycode 107 = Delete
以上就设定了主控台的参数。
要修改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~")
在bash
(1) 和 readline
(3) 的man说明中有更多这方面的资料。
不要以为这些设定在每种应用中都可正常运作。例如,在xterm
中运行joe
,有些键位就不起作用;运行rxvt
也有相同的问题。有人说,这是termcap的问题。
ls
(1)
ls
可显示目录,并用颜色提示不同种类的文档。要使用这项功能,则在/etc/profile
中增添以下内容:
eval `dircolors /etc/DIR_COLORS -b`
export LS_OPTIONS='-F -T 0 --color=tty'
这样就设定了LS_COLORS
的环境参数,其中存有/etc/DIR_COLORS
中的颜色变数表。注意:这项设置对rxvt
的有些版本无效,原因不明。不妨改用xterm
中的一些其他特性。可能rxvt
中仍有程序错误,以致有时不能运用设定的环境参数。
less
(1)
利用这个优越的页面调度程序不仅能浏览一般文字文档,也能观看压缩的gzip文档和以tar和zip格式储存的档案文档,其设置如下:
.lesskey
置于home目录内:
^[[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
然後运行指令lesskey
。这会生成绑定键位的二进制文档.less
。
/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" # 此为‘less’的预处理器。当环境参数定为LESSOPEN="|lesspipe.sh %s" # 时,便起用这个预处理器。 # # lesspipe() { case "$1" in *.tar) tar tf $1 2>/dev/null ;; # View contents of .tar and .tgz files # 阅读.tar和.tgz档的内容 *.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
.
切记将其作为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
此处设定变数LESSCHARSET
是因为作者居住在义大利,想要使用ISO 8859/1字符集的缘故,因此美国人、日本人、俄罗斯人等其他各国人士最好不要作此设定。
emacs
(1)
有些emacs
版本没有预先设置颜色和语法标示。可在.emacs
中增添:
(global-font-lock-mode t)
(setq font-lock-maximum-decoration t)
这只对X11有用。各位不妨从emacs
文献中探索符合各种需要的设定 -- 有时可能要耗费几个月的时间测试....
joe
(1)
检查/usr/bin/
中的jmacs
、 jstar
、和jpico
是否symlink到joe
,或是独立的二进制程式;如果仍为後者,则不妨将其作出symlink,以节省硬盘空间。
~# cd /usr/bin
/usr/bin# ln -sf joe jmacs ; ln -sf joe jstar ; ln -sf joe jpico
然後只要把/usr/lib/joe/joerc
作为.joerc
抄到home目录,再作出符合需要的修改。
jed
这是个颇为好用的编辑器:比emacs
短小精悍,宜於设置,并且IMHO模拟其他编辑器也相当不错。在作者工作的大学中有许多使用者都用jed
模拟VMS系统的编辑器EDT
。
设置文档为.jedrc
和 /usr/lib/jed/lib/*
;前者可从後者目录中的jed.rc
修改而得。
jed
正确使用一些键位,则编写一个/usr/lib/jed/lib/defaults.sl
档,内容只有一行:
() = evalfile("linux");
/usr/lib/jed/lib/linux.sl
; 去除Info_Directory = "/usr/info";
行前的注释符号并在UCB_Mailer =
; 後添加/bin/mail
jed
的参数使其模拟EDT
(或其他编辑器)的工作不难:只须编辑.jedrc
中的几行内容。
如果要用小键盘中的‘+’键删字,而不只删一个字母,则在.jedrc
中() = evalfile("edt");
行之後增添下列内容:
unsetkey("\eOl");
unsetkey("\eOP\eOl");
setkey("edt_wdel", "\eOl");
setkey("edt_uwdel", "\eOP\eOl");
EDT
模拟中,要使xjed
使用数字小键盘,则须在.Xmodmap
中添加下列内容:
keycode 77 = KP_F1
keycode 112 = KP_F2
keycode 63 = KP_F3
keycode 82 = KP_F4
keycode 86 = KP_Separator
同时确定/etc/X11/XF86Config
中有下列内容:
# ServerNumLock # must be commented out --必须取消前面的注释符号
XkbDisable
这项设置适用于XFree3.2。除非使用标准的美国键位键盘,“XkbDisable“可能会有一些小问题。不妨自己找找有什麽问题。
.Xdefaults
中增加以下内容可以更改xjed
的颜色:
xjed*Geometry: 80x32+150+50
xjed*font: 10x20
xjed*background: midnight blue
在xjed.doc文档中有更多这方面的资料。
如果电脑中装有TeTeX,可作下列几项设定:
/usr/lib/texmf/texmf/tex/generic/config/language.dat
,然後运行:
~# texconfig init ; texconfig hyphen
/usr/lib/texmf/texmf/tex/latex/
下输入文档後才安装LaTeX软件,则应运行 texhash
使TeTeX 认识新软件。
dvips
, 则须编辑/usr/lib/texmf/texmf/dvips/config/config.ps
。注意:有关默认分辨率的参数也影响 xdvi
的运行;如果每次运行时发现都要创造字体,则可改动 .Xdefault
的内容如下:
XDvi*mfmode:
这应有所帮助。
目前Linux的内核几乎都已编入了PPP + TCP/IP功能,设定了回送地址(loopback)和正确安装了pppd
软件。那麽有两种方式可使PPP正常运作:(a)手动设定;和(b)利用一个程式自动设定。首先,试试手动设定。
假定ISP的资料如下:
手动设置PPP联网的方式为:
/usr/local/bin/ppp-on
档,将用于与ISP连接:
#!/bin/sh
# ppp-on: script to connect to an ISP --连接ISP的程式
INIT=ATX3 # or whatever your modem wants --或符合特定数据机启动的设置
PHONE=1234567
/usr/sbin/pppd connect "/usr/sbin/chat '' $INIT OK ATDP$PHONE \
CONNECT '' " user John
然後运行chmod 755 /usr/local/bin/ppp-on
使其成为可执行档。如果ISP不使用PAP协议,则可用下列程式:
#!/bin/sh
# ppp-on: script to connect to an ISP ----连接ISP的程式
INIT=atx3 # or whatever your modem wants ----或符合特定数据机启动的设置
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
用于结束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
运行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
。寻找以DS
开始的一行,并更改如下:
DSmbox.supernet.edu
花了这麽大的力气,如果运气好,有这样的设定就够了。否则,那就准备开始翻看PPP-HOWTO吧。
以上就是手动设置。不过,现在有一套不错的软件,可免除这项苦差事:这套软件称为ezppp
,可在下列网址找到:
http://www.serv.net/~cameron/ezppp/index.html
。
要从POP伺服器收取邮件,可使用POP用户端程序,如fetchpop
或 fetchmail
等。如果ISP的PPP伺服器不支持LAST指令,则後者可能是唯一可用的方法。
设置这些用户端程序的方法如下:
fetchpop
:首次运行这个软件时会要求提供一些资料。回答所有问题後,就设定了这个软件。
fetchmail
:参照以下□例 .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"
最後一行并非必需。必须运行chmod 600 .fetchmailrc
设定此档的使用权限,否则fetchmail
会完全拒绝运行。
一旦X 视窗可以运行後(正确地设定了显示卡等细致工作),就可作出其他各色各样的设置,完全取决于使用何种视窗管理程序。不过,归根结底,只是编辑home目录内的一个或几个ASCII文档。至於视窗管理程序:
/etc/X11/fvwm/system.fvwmrc
作为.fvwmrc
拷贝到home目录,看看内容并开始试验。这个system.fvwmrc
实在简单,对fvwm
至不公平。
/etc/X11/fvwm95-2/fvwm2rc95
作为.fvwm2rc95
拷贝到home目录,然後进行编辑。这个实例相当好用。
/etc/X11/TheNextLevel/.*
拷贝到home目录,仔细阅读并试改内容。首先试试 .fvwm2rc.defines
。
此外,一定要有适当的.xinitrc
,例如:
#!/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 --5分钟後开始屏幕保护程序
xsetroot -solid "medium blue" &
# rxvt 节省内存,但有几个错误程序:
# - 不认home和end两键;
# - backspace和delete两键和在主控台时的作用不同;
# - 颜色不依照环境参数设定;
# - 与环境参数时有冲突;
# 因此,多数情况下,xterm比较好用。但rxvt在麦金塔机的一些颜色应用上显示较好。
xterm -ls -bg black -fg white -sb -sl 500 -j -ls -fn 10x20 -fb 10x20bold \
-title "Color xterm" -geometry 80x25+150+0 &
fvwm95-2
依据经验,代用g77
的最好Fortran-to-C翻译器是f2c
和前端软件yaf77
。
yaf77
可从
ftp://sunsite.unc.edu/pub/Linux/devel/languages/fortran/yaf77-1.4.tgz及其镜象网址取得。
新用户在首次登录时,最好已有几个设置文档可用。可将下列设置档放在/etc/skel
中:bashrc、bash_profile、bash_logout、inputrc、less、 xinitrc、fvwmrc、fvwm2rc95、Xmodmap、Xdefaults、jedrc、joerc、emacs
。
(注意:由于排版的缘故,上面每个文档前均未放置‘.’符号)
对.pinerc
无法进行充分设定;但至少要设定user-domain
、smtp-server
和nntp-server
的参数。