Mine?Yours?-Ours!

2008年11月10日星期一

面相图片

男人面相:
























女人面相:

2008年11月9日星期日

汉字浅释之二:名与字

按:

在如今的中国社会, 西风东渐, 国人对西方之文化崇而有加, 但对中华之国学知之甚少进而嗤之以鼻, 当然也正因其知之甚少才会有轻视汉学之现象, 在我们这个风气日益倾向于浮躁和逐利的社会, 多的是浮躁之人, 又有几人静心了解自己的深厚的中华文化呢?! 如今的”中医存废论”、“风水封建说”等争论不休,大有誓将国学打入地牢之决心,反观它国,日本要申请“风水”为遗产,英国要将中医纳入医疗保障体系,韩 国要将中医更名为韩医…,如今的我们在做什么呢?
由此而观汉字,更有甚者, 推出了”汉字拼音化”及”去汉字化”的可悲口号。故,本系列短文着力于介绍汉字的本义,因作者之学浅,文中难免有疏漏不当之处,望指正交流。
是以为按。
Eric Cheung:汉字浅释之一:輕与重
Eric Cheung: 汉字浅释之二:名与字

名与字:

我们本次所谈的字是"名"和"字"这两个字, 而且我们只谈"名字"中的"名"和"字"的意思, 也就是说不谈"文字"中的"字"的意思.
我们每人均有名字, 如今年轻的父母亲在孩子还未出生之际就已经为给孩子取名字而头疼不已. 确是如此, 对于中国人来说, "名字"兹事体大, 名字伴随我们每个人一生, 更会影响一生. 好的名字的确对人影响不小, 比如李世民取"济世安民"之意等.
中国人的名字的特点是姓在前名随后, 体现的是中国人的血族观念, 比较注重集体和家族性; 而西方人名则恰相反.

下面我们一一来看"名字"二字.

名:




<<说文解字>>注: 名,自命也,从口从夕。夕者,冥也,冥不相见,故以口自名。
"名"作名词时, "字"和"名"常有意义上的联系。自称用名,表示谦虚;称人用字,表示尊敬.
"名"一般是父母长辈给取的, 用于小时候的称呼. 比如有的人小名叫作丽、成、飞、二牛等等。因此在《礼记·檀弓》写道:幼名,冠字。疏:“始生三月而加名,故去幼名;年二十,有为人父之道,朋友等类不可复呼其名,故冠顶加字。”
我们看这个字有点意思, "名"从口从夕, 夕者,冥也,冥不相见,故以口自名这是本义. 另外, 我们马上在脑海就会浮现一幅画: 夕阳西下, 顽童游戏忘记归家, 母亲站在村口呼唤儿的乳名令其归家. 这是多美的一幅画啊, 想想在农村长大的孩子应该有此体会.
因此, 在<<礼仪·士冠礼>>中写道: 冠而字之,敬其名也。君父之前称名,他人则称字也. 就是说, "名"是长辈叫的, 而成人以后就要步入社会,不可能继续用“名”了,因此"字"是平辈、社会上的称谓。


字:





<<说文解字>>注: 乳也。从子在宀下,子亦聲。
会意兼形声。从宀(mián)从子,子亦声。在屋内生孩子。本义: 生孩子(动词)。
字,乳也。――《说文》;字,生也。――《广雅》
作动词时还有:怀孕,体内怀着胎儿;字养(抚养;养育);字民(养育人民);字育(化生);字孤(抚养孤儿);爱;教育;教课;传授知识;治理;取名;取表字;女子许嫁(字人)的意思。
古时,男子到了二十岁的时候要行冠礼,即成人之礼,可惜现代人已经淡忘了。冠礼不仅仅就只是个束发的仪式,它更重要的是取字,所以《礼记·曲礼上》有:男子二十,冠而字。在<<礼仪·士冠礼>>中写道: 冠而字之,敬其名也。君父之前称名,他人则称字也。男人二十而成年,即要步入社会,要成家室(从宀),承子嗣(从子),要明为夫为父之道,要承担家庭和社会责任,学会约束自己(束发而冠顶),这时如朋友等及不能叫他的名了,所以要取字。
同样的,女子也要取字,不过不是像男子那样,女子是在许嫁的时候(成人)取字。《仪礼·士昏礼》有:女子许嫁,筓而礼之,称字。 这里的“筓”就是“安髮之筓”,用于整理头发用的,使头发束起而不致坠落,男女均可用。但也有一种“冠筓”只有男子独有,参见《儀禮疏》:凡筓有二種,一是安髮之筓,男子、婦人俱有。一是爲冠筓,皮弁爵弁筓,惟男子有而婦人無也。又大夫、士與妻用象,天子、諸侯之后、夫人用玉爲筓。
所以,女子和男子在取字方面是不同的。我们经常说“待字闺中”就是这个意思。
另外,“名”和“字”是有关联的,不是说小时候的“名”和以后取的“字”没有关系。在《白虎通·姓名》有:闻名即知其字,闻字而知其名,盖名与字相比附故。例如岳飞,”飞“是名,字“鹏举”,"飞"和“鹏举”有关联;再看赵云,“云”是名,字“子龙”,取“云从龙”之意;杜甫,字“子美”,而“甫”就是美男子之意。

所以,自古以来,中国人对待“名字”是很重视的,可以想象,当男子在行“冠礼”“取字”的时候,在那种庄重严肃的场合,在其心底必有所感染,必会注重男人本身应负的家庭责任与社会责任。
如今,我们可能不太注重“名”与“字”的关系和不同了,也不会有行冠礼的仪式了,也许大家会发现如今的青少年最缺少的恰恰就是“责任感”。难道仪式真的就是可有可无的吗?我们渐渐丢失的难道仅仅是仪式吗?


参考资料:
http://zh.wiktionary.org/w/index.php?title=%E5%AD%97&variant=zh-cn
http://zh-classical.wikipedia.org/wiki/%E7%B6%AD%E5%9F%BA%E5%A4%A7%E5%85%B8:%E7%B6%AD%E5%9F%BA%E7%88%BE%E9%9B%85/%E5%90%8D
http://zh-classical.wikipedia.org/wiki/%E7%B6%AD%E5%9F%BA%E5%A4%A7%E5%85%B8:%E7%B6%AD%E5%9F%BA%E7%88%BE%E9%9B%85/%E7%AD%93

2008年11月8日星期六

Eric Cheung: 英语从汉语中“借走”的十个中国词[转]

原文链接:http://yijieren.bokee.com/6580391.html

作为世界性的大语种,它成了现代与文明的标志。有人跟风叫嚷:只要具备两条就是“现代文盲”,一,不懂英语;二,不会电脑。其实,文化所涉及的领域形形色色,是否可以这样说,不会写毛笔字、不会算卦,就等于“国学文盲”?

凭人怎么说吧,现代中国为了追求“和世界接轨”,几乎把英、法、俄、德、日、意、西班牙和阿拉伯语,当成了通向世界、通向文明的惟一桥梁。母语——中国话可以弄得一塌糊涂,甚至不如日本人写得漂亮,讲得流利;英语,却必须要捱过大学六级、托福考试。这据典型的崇洋媚外做法,似乎该回头了。随着中国国力的增强,汉语也逐渐变成了外国人的香饽饽儿。仔细一看才发现,许多英语词汇其实就源于汉语,欧洲人做过精细的统计,自1994年以来加入国际英语行列的词汇中,中式英语贡献了5%到20%,超过任何其他来源。

英语属于印欧语系(Indo-European languages),包含着印度、西亚和欧洲的语言。目前使用的英语单词中,有不少是从非印欧语系“拿来”的,这在狭义上,就是英语中的外来语。这些白皮黄心的“鸡蛋词”,无须向“英语世界”做额外解释,就能顺利地理解、沟通。脱胎于汉语的“鸡蛋词”,早就默默地影响全世界了。除“孔夫子(Confucious)”、“中国功夫(kung fu)”、“麻将(mahjong)”或者“豆腐(tofu)”之类绝无仅有的称谓,再挑拣10个真正有中国气质、代表华夏气派、并影响全球当代生活的“ 鸡蛋词”,便足以说明问题。

(一)丝绸——silk
中国是养蚕大国,丝绸的故乡。瓷器和丝绸始终是古代中国对外贸易的绝密技术和看家商品,直到鸦片战争前,英国进口到广州的钢琴,还干不过珠光宝气的丝绸。 “silk”的发音,显然是汉语的音译,这个词代表了中国高超的工艺技术和贸易强势。即便现在,丝绸仍在现代生活中充当雍容华丽、典雅高贵的象征。

(二)茶——tea
这个词,又是英国人从拗口的闽南话里偷走的。茶,和丝绸、瓷器比肩,堪称古代中国对外贸易的拳头产品。目前,品茶代表了一种生活方式和文化品位,中国人对人生的思考,几乎都能在袅袅茶烟里找到。据萧乾的《茶在英国》介绍:“茶叶似乎是17世纪初由葡萄牙人最早引到欧洲的……英国的茶叶起初是东印度公司从厦门引进的,17世纪40年代,英人在印度殖民地开始试种茶叶,那时,可能就养成了在茶中加糖的习惯。”据说,即使在“二战”那样物资困乏的时期,法国人定量配给咖啡,英国人则要的是茶,还有一点点糖。茶成了欧洲人的“主心骨”,他们只能跟着茶香如醉如痴地行走,这不是本土的历史与遗传;而是异域文化的征服和同化。18世纪的柴斯特顿勋爵干脆在《训子家书》里写道:“尽管茶来自东方,它毕竟是绅士气味的;而可可则是个痞子、懦夫,一头粗野的猛兽。”

(三)世外桃源——Shangrila (Xanadu)
这是两个近意词。都有“世外桃源”的意思。“Shangrila”出自西藏的传说之地——香格里拉,“Xanadu”则是蒙古的元上都。如果要表达“世外桃源”,通常采用“Xanadu”这个词。看来,以出世自居的美国作家梭罗,白白地在瓦尔登湖旁边,做了那么久的“隐士”。讲究“寄情山水、超然物外”的哲学,中国人是当之无愧的开山鼻祖。
(四)风水——Feng Shui
风水,还是音译。它凝聚了古代中国在活人住宅和死人墓地方面的集体智慧。尽管有人打着所谓“科学”的旗号,指斥风水是封建迷信;但是,迷信所谓“科学 ”,故步自封,则是另外一种迷信。风水的整体原则是“趋利避害”,这也是安全生存最起码的信条。近年来,风水在美国红极一时,从中国人唇齿之间发出的音节,已经成为当代人急需探究的学问。

(五)茶点——dim sum
一听发音,就知道,这个略带小资情调的词儿,来自闽粤。英国人有喝下午茶的习惯,几杯印度红茶,常就一碟甜点。英语原本有表示蛋糕、点心的词,偏偏不用,硬要拽一个来自汉语的生僻字。恐怕多少也有与时尚接轨、和东方同步的优越感吧。中国是茶的故乡,茶点也摇身一变,成为登堂入室的英语外来词。

(六)走狗——running dogs
中国式英语贴切地表达了一种见利忘义、供人驱使的“下三烂”。无从考证,最先运用这个词的是中国人,还是英国人;重要的是,英语世界接纳了“走狗”,并以汉语的思维抚育这个“外来词”。接纳词汇的同时,无形中也接受了中国人的价值观。

(七)纸老虎——paper tiger
这是最令人难忘和扬眉吐气的一个新词。缔造者应该是伟大的民族英雄——毛泽东!他老人家是博学的诗人、雄才大略的政治家、运筹帷幄的军事天才。美国人硬不硬?苏联人牛不牛?原子弹厉害不厉害?……在他眼里,都是色厉内荏的“纸老虎”。只要跟中国人作对,老子就得碰碰硬,看天下“谁主沉浮”。上世纪50年代的“美帝国主义”、六七十年代的“苏修”,都变成了毛泽东嘲笑的“纸老虎”。这种蔑视强敌、自强不息的精神,当然是中国人对世界文明的贡献。谈笑风声缔造了一个词,足令中国的敌手躲在角落里发抖了。

(八)大款、巨亨——tycoon
这种称呼是近些年才流行街巷的,指有钱有势的商人或者企业家,中国传统的叫法是“大掌柜”。被英语拿走,又是闽粤之地的音译。可见,鸦片战争前,中国商人名声在外,马可·波罗在书里描写的东方,物阜民丰,黄金铺地。来中国走一遭,就像现在某些“假洋鬼子”上趟拉斯维加斯一样。

(九)赌场——Casino
这个词,似乎是地道的西方舶来品,发音酷似法语或者意大利文。殊不知,“Casino”竟是福建话的音译,可是,为什么英语要拿它表示“赌场”的意思呢?据传,很久以前,移民到美国的福建民工,拿到一点微薄的工资,便在无聊之际,聚众赌博,试试运气。每次开局,都会嚷嚷:“开始了! 开始了!”想不到,阴差阳错地搭给英语一个现代词汇。

(十)小费,赏钱——Cumshaw
这个词是闽南话“感谢”的音译。为了给人一点酬劳,在钞票上意思意思。英语世界也像喜欢“money”一样,渴望“Cumshaw”这个油水丰厚的单词。尽管中国人没有给小费的习惯,但是,对于钱,却并非一毛不拔,甚至比西方人出手还大方。偷走“Cumshaw”这个“鸡蛋字”的欧洲人,一定见过,中国人曾如何挥金似土。其实,东西方对待金钱并没有本质的不同。

Linux(BASH)命令搜索机制

Eric Cheung: Linux(BASH)命令搜索机制

本文假设的环境是GNU/Linux,且shell是BASH;
注 意: 另外, 我们讨论的前提是当你键入一个命令时并没有指定该命令的路径, 举例来说就是我们键入的命令是以commandname的形式而不是/path/commandname或./path/commandname的形式来 运行的. 一旦我们指定了命令(或脚本或二进制文件)相对或绝对路径时就谈不上搜索机制了.
本文讲解的内容是: 通常,我们在Linux系统终端提示符下键入如ls等命令时,shell是如何找到这个命令的呢? shell下都有哪几类命令呢? 这些命令是如何被加载的呢?

目录:

linux命令的分类

linux命令搜索顺序

相关

命令举例

一, Linux命令的分类:

包括:alias, keyword, function, built-in, $PATH这5类

二, Linux命令搜索顺序:

当我们键入某个命令时, 那么shell会按照alias->keyword->function,->built-in->$PATH的顺序进行搜索, 本着”先到先得”的原则, 就是说如果有如名为mycmd的命令同时存在于alias和function中的话, 那么肯定会使用alias的mycmd命令(当然, 这不是绝对的, 下面会说到特例).

三, 相关

set +-h, hash, type, command, enable, builtin
1) hash命令:
首先, 我们来看hash这命令(和我上面说的”不是绝对的”有关系了!), hash命令用于记录在当前shell环境下用户曾经键入的命令路径记录缓存表, 主要是为了加快命令搜寻速度. 下面看个例子:
例:我在shell下键入 ls, find, pwd, ls, echo “Hello, world”, mail及if共7个命令(注意, ls执行2次), 下面是history的结果:
1 ls
2 find
3 pwd
4 ls
5 echo “Hello, world”
6 mail
7 if
那么, 现在我执行hash命令, 其显示结果为:
[ancharn@fc8 ~]$ hash
hits command
1 /bin/mail
2 /bin/ls
1 /usr/bin/find
不知大家发现了什么没有? 这个hash表左边一列表示该命令在当前shell环境下共被使用了几次, 右边一列表示命令路径. 但是我们发现这个hash缓存中缺少了if,pwd和echo3个命令, 为什么呢? 我们在这儿要得出一个重要的结论就是: (1) hash不会记录function, built-in命令(其实还包括alias), 为什么呢? 答案是因为他们没有路径, 即不会存在于某个目录之下, 它们是随shell而加载进而存在于内存中, 所以这样的命令还有必要进行缓存以提高搜索效率吗?!
但是有人会说, ls不是被hash记录下来了吗? 没错, 你的观察很细致, 通常ls在bash中是一个alias, 那么, 在这儿我们先下一个结论: (2) alias中若定义的是包含了路径的别名命令则不会被记录到hash中, 只有没有指定路径的alias才会被记录到hash中. 情况例子:
这是我当前shell(bash)环境下的ls别名的定义
[ancharn@fc8 //]$ alias ls
alias ls=’ls –color=auto’
(注意:后面的”ls –color=auto”没有指定如/bin/ls这样的路径)
所以, 正如你看到的, 上面我键入了2次ls命令(是ls –color=auto的别名), 那么在hash中能够看到被记录; 下面看个write命令的例子:
[ancharn@fc8 //]$ alias write
-bash: alias: write: not found
[ancharn@fc8 //]$ write
usage: write user [tty]
[ancharn@fc8 //]$ hash
hits command
1 /usr/bin/write
1 /bin/mail
2 /bin/ls
1 /usr/bin/find
write 这个命令没有alias, 也就是说当执行write命令时其实找到的是PATH变量中的/usr/bin/write这个二进制文件来执行的, 这时hash记录了write的路径并被引用了1次, 然后我定义write别名就是write本身, 但是指定具体路径是/usr/bin/write:
[ancharn@fc8 //]$ alias write=’/usr/bin/write’
[ancharn@fc8 //]$ alias write
alias write=’/usr/bin/write’
[ancharn@fc8 //]$ write
usage: write user [tty]
[ancharn@fc8 //]$ hash
hits command
1 /usr/bin/write
1 /bin/mail
2 /bin/ls
1 /usr/bin/find
请看, hash表中的write的hits数还是1次; 这里要注意的是当我们定义了write的alias后(指定路径), PATH就不会被搜到了, 为什么呢? 很简单, 因为write的alias中已经指明了它的具体路径 了!
接着unalias掉write重新定义write别名:
[ancharn@fc8 //]$ unalias write
[ancharn@fc8 //]$ alias write
-bash: alias: write: not found
[ancharn@fc8 //]$ alias write=’write’
[ancharn@fc8 //]$ alias write
alias write=’write’
[ancharn@fc8 //]$ write
usage: write user [tty]
[ancharn@fc8 //]$ hash
hits command
2 /usr/bin/write
1 /bin/mail
2 /bin/ls
1 /usr/bin/find
这 次, 我们没有指定write别名中的路径, 当我们定义好write的别名后去执行write时, hash表中就会增加一次hits. 这里要注意的是当我们定义了write的alias后(不指定路径, 请和上面的例子比较下), PATH就会被搜到了, 所以hash的hits增加了. 请大家切记alias中若定义的是包含了路径的别名命令则不会被记录到hash中, 只有没有指定路径的alias才会被记录到hash中这条结论.
另外, hash因为是built-in命令, 所以用help hash来查看帮助. 常用的有hash -r用于清空hash表, hash -d name用于delete某个command. 如:
[ancharn@fc8 //]$ hash
hits command
3 /usr/bin/write
1 /bin/mail
2 /bin/ls
1 /usr/bin/find
删除具体的:
[ancharn@fc8 //]$ hash -d ls
[ancharn@fc8 //]$ hash
hits command
3 /usr/bin/write
1 /bin/mail
1 /usr/bin/find
清空hash:
[ancharn@fc8 //]$ hash -r
[ancharn@fc8 //]$ hash
hash: hash table empty

2) set +-h:
set 命令大家应该很熟悉, 我们在这里主要说的是set +-h的作用: help set可以看到”-h Remember the location of commands as they are looked up.” 中文意思就是记忆命令的路径以便于查询. 当我们键入set +h后再运行hash:
[ancharn@fc8 //]$ set +h
[ancharn@fc8 //]$ hash
-bash: hash: hashing disabled
也就是说”set +h”用于禁用hash而”set -h”用于启用hash.

3) type:
此命令用于列出某个命令属于哪类. 如:
[ancharn@fc8 //]$ type -a pwd
pwd is a shell builtin
pwd is /bin/pwd
pwd属于内置和PATH变量中.
[ancharn@fc8 //]$ type pwd
pwd is a shell builtin
直接用type commandname可以告诉你该命令在运行时会执行哪一类.

4) command:
该 命令的作用是: 如果你有一个命令如gcc既是一个function, 同时又是一个PATH变量中的命令, 那么如果你直接执行gcc, 按照顺序来说, 会执行function而不是gcc的PATH变量中的命令, 而用command gcc会跳过function的选择.
[ancharn@fc8 //]$ function gcc { echo “just a test for gcc”; }
[ancharn@fc8 //]$ gcc
just a test for gcc
[ancharn@fc8 //]$ command gcc
gcc: no input files

5) enable:
enable命令如果直接运行则会列出当前shell的所有built-in命令, enable -n commandname会在当前shell下disable掉该内置命令:
[ancharn@fc8 ~]$ type -a pwd
pwd is a shell builtin
pwd is /bin/pwd
[ancharn@fc8 ~]$ enable -n pwd
[ancharn@fc8 ~]$ type -a pwd
pwd is /bin/pwd
[ancharn@fc8 ~]$ enable pwd
[ancharn@fc8 ~]$ type -a pwd
pwd is a shell builtin
pwd is /bin/pwd

6) builtin
用于运行一个内置命令. 例如:
[ancharn@fc8 ~]$ cd /var
[ancharn@fc8 var]$ function pwd { echo “just a test for pwd”; }
[ancharn@fc8 var]$ type -a pwd
pwd is a function
pwd ()
{
echo “just a test for pwd”
}
pwd is a shell builtin
pwd is /bin/pwd
(注: pwd既是函数, 又是内置命令, 又存在PATH变量中)
[ancharn@fc8 var]$ pwd
just a test for pwd
[ancharn@fc8 var]$ builtin pwd // (注: 此时我们就去直接执行pwd这个内置命令)
/var

小结: 我们都知道了shell在搜索命令时的顺序是alias->keyword->function,->built-in->$PATH, 那么其中还有2点需要注意的就是 (1) hash不会记录function, built-in命令(其实还包括alias), (2) alias中若定义的是包含了路径的别名命令则不会被记录到hash中, 只有没有指定路径的alias才会被记录到hash中. 另外, (3) 不要忘记, 我们讨论的前提是a) 受限于具体的shell种类b)且只在当前shell环境有效.切记!!!

到这里, 请大家来思考一个问题:
请看下面的执行情况:
[ancharn@fc8 var]$ function gcc { echo “just a test for gcc”; }
[ancharn@fc8 var]$ alias gcc=’gcc’
[ancharn@fc8 var]$ gcc
just a test for gcc
[ancharn@fc8 var]$ /usr/bin/gcc
gcc: no input files
[ancharn@fc8 var]$ alias gcc=’/usr/bin/gcc’
[ancharn@fc8 var]$ gcc
gcc: no input files
[ancharn@fc8 var]$
为什么定义了gcc这个funtion后, 两次定义gcc的alias时指定不指定具体的/usr/bin/gcc路径时, 执行gcc这个命令的反应不同呢? 按照alias->keyword->function,->built-in->$PATH 这个顺序来看, 应该执行alias的gcc啊?! 请思考!
当然, 别着急, 后面我会给出答案. 但是, 请您思考下!

四, 命令举例:

* alias(别名):
alias 命令通常被设定在文件~/.bashrc和/etc/bashrc中,~/.bashrc通常用于用户自己的环境,而/etc/bashrc用于全局定义 (即对所有用户生效,当然,只对用户shell是bash生效). 具体的这两个文件的关系及如何加载在后面有介绍.

* Shell keyword(shell关键字):
诸如if,while,until,case,for这些命令.

* Function(函数):
举例:
定义个名为pwd的函数, 其功能是简单地显示”my function pwd”这句话
function pwd { echo “my function pwd”; }
定义好了之后可以用set或type -a pwd来查看,取消则用unset pwd即可。

* Shell built-in command(shell内置命令):
命令enable可以查看所有当前shell环境下的内置命令; 或者用man cd(任何一个内置命令均可)查看到的manpage的上部列出了全部的内置命令.

* PATH variable
该变量定义在文件/etc/profile, /etc/profile.d/*.sh(POSIX), ~/.bash_profile(Bash)中.
其加载顺序是: 先/etc/profile (invoke /etc/profile.d/*.sh), 然后是~/.bash_profile, 再由~/.bash_profile调用执行 ~/.bashrc, 然后由~/.bashrc去调用执行 ~/.bashrc, ~/.bashrc再调用执行文件/etc/bashrc.
1) 为了查看具体的加载顺序, 你可以在四个文件中的头部和尾部分别添加两句话, 例如:

[ancharn@fc8 ~]$ cat ~/.bashrc
echo "start of ~/.bashrc"
if [ -f /etc/bashrc ] ; then
. /etc/bashrc
fi
alias ll='ls -l'
alias cp='cp -i'
alias mv='mv -i'
alias rm='rm -i'
......
echo "end of ~/.bashrc"
其它的文件一样添加, 这样当你用某个用户登录系统时就会看到如下的显示, 诸如:
start of /etc/profile
end of /etc/profile
start of ~/.bash_profile
start of ~/.bashrc
start of /etc/bashrc
end of /etc/bashrc
end of ~/.bashrc
end of ~/.bash_profile

从上面的显示你能够清晰的看到每个文件的加载顺序及相互调用执行关系(注意查看start和end).

2) PATH变量和hash的关系
这里, 我们来看一个例子:
[ancharn@fc8 ~]$ echo $PATH
/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/ancharn/bin
我首先在/home/ancharn/bin目录下写一个名为test.sh的脚本,内容如下:
[ancharn@fc8 bin]$ cat /home/ancharn/bin/test.sh
#!/bin/sh
# just test for PATH and hash
echo "This is my 1st shell script in /home/ancharn/bin directory."

# end
[ancharn@fc8 bin]$
那么, 执行test.sh这个脚本如下:
[ancharn@fc8 /]$ echo $PATH
/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/ancharn/bin
[ancharn@fc8 /]$ test.sh
This is my 1st shell script in /home/ancharn/bin directory.
[ancharn@fc8 /]$ hash
hits command
1 /home/ancharn/bin/test.sh
接着,在/usr/bin目录下建立一个同test.sh名的文件, 内容如下:

[ancharn@fc8 /]$ cat /usr/bin/test.sh
#!/bin/sh
# just test for PATH and hash
echo "This is my 2nd shell script in /usr/bin directory."

# end
继续执行test.sh脚本:

[ancharn@fc8 /]$ test.sh
This is my 1st shell script in /home/ancharn/bin directory.
[ancharn@fc8 /]$ hash
hits command
2 /home/ancharn/bin/test.sh
说明什么呢? 如果按照PATH的顺序即/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/ancharn/bin, 会先找/usr/bin然后再找/home/ancharn/bin, 注意, 这个前提是hash表中没有该命令的记录, 因此我们看到/usr/bin/test.sh脚本并没有被执行, 因为在执行test.sh前, shell去hash表中查看了缓存, 进而继续执行了/home/ancharn/bin/test.sh脚本, 所以我们看到hits数增加了一次, 而/usr/bin/test.sh不会被执行.
现在, 我们清空hash, 重新执行test.sh脚本:
[ancharn@fc8 /]$ hash -r
[ancharn@fc8 /]$ hash
hash: hash table empty
[ancharn@fc8 /]$ test.sh
This is my 2nd shell script in /usr/bin directory.
[ancharn@fc8 /]$ hash
hits command
1 /usr/bin/test.sh
现在正常了. 所以一定要注意PATH和hash的这层关系.

注意: su, su-, bash –login, bash –norc这些命令的不同就在于是否执行了login-shell, 大家可以su和su -后, 再去运行echo $PATH看看有何不同.

好了, 回答上面的思考题, 其核心在于alias如果定义的如alias gcc=’gcc’时, 其实alias->keyword->function,->built-in->$PATH 这个顺序并没有变, 但是要知道alias gcc=’gcc’这种没有指定路径的alias会在找到gcc这个alias后, 再去找到后面指定的’gcc’, 怎么找? 当然到下一个了, 就是keyword->function….这个顺序了. 而如果是alias gcc=’/usr/bin/gcc’这样的指定具体路径的定义alias的话, 那么alias执行后就直接找到了那个具体文件而跳过了后面的所有搜索(即keyword->function,->built-in->$PATH). 请大家留意.

最后, 大家在做实验验证的时候可以分成2类验证, 因为一个命令不可能既属于keyword又属于built-in, 所以你可以:
1) 选择一个keyword如while, 定义一个while的alias,function,然后编写一个shell脚本名为while存放于PATH变量的某个路径下;
2) 选择一个built-in命令如pwd来验证.

汉字浅释之一:輕与重

按:

在如今的中国社会, 西风东渐, 国人对西方之文化崇而有加, 但对中华之国学知之甚少进而嗤之以鼻, 当然也正因其知之甚少才会有轻视汉学之现象, 在我们这个风气日益倾向于浮躁和逐利的社会, 多的是浮躁之人, 又有几人静心了解自己的深厚的中华文化呢?! 如今的”中医存废论”、“风水封建说”等争论不休,大有誓将国学打入地牢之决心,反观它国,日本要申请“风水”为遗产,英国要将中医纳入医疗保障体系,韩国要将中医更名为韩医…,如今的我们在做什么呢?
由此而观汉字,更有甚者, 推出了”汉字拼音化”及”去汉字化”的可悲口号。故,本系列短文着力于介绍汉字的本义,因作者之学浅,文中难免有疏漏不当之处,望指正交流。
是以为按。
Eric Cheung:汉字浅释之一:輕与重
Eric Cheung: 汉字浅释之二:名与字

輕与重







这两个汉字体现出了汉字的辩证观点。

重与輕是相对的,俗语有讲“远行无轻重”,就是说即使你身上带着很轻的包裹,只要出远门,那么这个很轻的包裹我们就会感觉到很累很重,但是你就只是在手里掂量一下该包裹的话,可能就会觉得很轻。这就是辩证的道理。

那么,从重与輕这两个字本身来分析的话,“重”是由“千”和“里”组成,就是说一个人拿着一个轻物走了很远当然就会觉得“重”;而“輕”这个字由“車”和“坙”组成,就是说有车使力拉物,当然人就感觉不到物体的沉重了。

另外,輕与重还有很多的引申含义,比如说最近心事重重,最近心里感觉很轻松,你这人说话的语气有点重了,批评孩子的时候说轻了不管用等等。

所以,我们看“輕与重”只是相对的概念,而这两个汉字即体现了中华民族对客观世界的深入认识,也只有汉字才能将輕与重的概念通过字来表达的如此清晰简练。

参考资料:

《信仰字中寻》作者:萧启宏
http://www.zdic.net/zd/zi/ZdicE9Zdic87Zdic8D.htm

2008年11月7日星期五

wordpress注册后显示激活链接及密码[转]

原文链接

wordpress mu与wordpress不一样,这个新用户注册后是要求激活的,并且激活的链接会发到你的邮箱,但是在windows下的邮件发送比较麻烦

一朋友问我在windows下能不能解决wordpress mu的新用户注册的问题

那既然邮件收不到,那有两种办法可解决问题:
第一,用户注册后到数据库中查找activation_key,然后到http://$domain/wp-activate.php?key=
后面加上activation_key进行激活,这样虽然可以解决,但是如果注册用户较多,那就比较麻烦了
既然这样不可以,那想到有这个激活的链接,那能不能直接把激活的链接显示出来呢?这样应该可以解决了。

这就是要说的第二种解决办法了:

按照这个思路,查看了wordpress的注册用户的时候的文件,发现按照如下的办法可以显示激活链接

1、修改wp-signup.php文件
修改confirm_blog_signup函数,大概在356行:

  1. // 找到function confirm_blog_signup($domain, $path, $blog_title, $user_name, $user_email, $meta) {

  2. //在"{"符号下另起一行, 并增加下面三行:
  3. global $wpdb;
  4. $bkey=$wpdb->get_var("SELECT activation_key FROM wp_signups WHERE user_login = '$user_name'");
  5. $active_url='http://' . $domain . 'wp-activate.php?key=' . $bkey;
  6. //注: 上面三行就是提取出激活链接地址, 并赋值给active_url.
  7. //(注意: 如果你的blog的url类似于http://domain/blog的话, 那么请将'wp-activate.php?key='修改成'/blog/wp-activate.php?key=', 即增加path部分)

  8. //找到
  9. //在后面增加如下的内容(即在页面显示激活链接)
  10. printf(__('Check this link %2$s is active and click the link given. '),$active_url,$active_url) ?>

2、修改wp-activete.php文件:
大概在57行,也就是if( $signup->domain . $signup->path == ” )的else部分修改为:

  1. printf(__('

    Your blog at %2$s is active. You may now login to your blog using your chosen username of "%3$s". userpass of "%4$s". Please check your email inbox at %5$s for your password and login instructions. If you do not receive an email, please check your junk or spam folder. If you still do not receive an email within an hour, you can reset your password.

    '), 'http://' . $signup->domain, $signup->domain, $signup->user_login, $signup->user_pass, $signup->user_email, 'http://' . $current_site->domain . $current_site->path . 'wp-login.php?action=lostpassword');

//也就是增加了激活后$signup->user_pass(用户和密码)的显示部分

测试的效果如下,按照步骤新建一个用户testaaa,邮箱testaaa@sina.com
注册到如下图的部分:

点击图中的链接后:

看,显示了用户名和密码了吧,登录后可修改密码。

2008年11月5日星期三