拷贝目标文件名如果是一个符号链接,记得先删除这个链接!

今天使用自己编译的Xorg的libX.so, 测试xiiim的输入法。测试过程中发生了一个小插曲。

第一次测试时没有编译xiiimp.so.2,只是在目录/usr/local/lib/X11/locale/common中做了一个连接:
ln -s  /usr/openwin/lib/locale/common/xiiimp.so.2 xiiimp.so.2

第二次自己编译了xiiimp.so.2, 然后将xiiimp.so.2拷贝到目录/usr/local/lib/X11/locale/common中,直接使用测试。

测试完以后,发现系统中原来的gnome-terminal无法启动了,经过调查发现是xiiim出了问题,依然在用我编译出来的那个版本的xiiimp.so.2。

看出问题出在哪里了吗 ?
问题就是在拷贝那一步,因为拷贝的目标文件是个链接,所以/usr/openwin/lib/locale/common/xiiimp.so.2 被替换成我编译出来的那个版本了。

作个简单实验就知道了。
1)创建2个文件先:
$echo a>a
$echo b>b

2)创建链接:
$ln -s a c

验证:
-rw——-   1 xx staff          2  5月 22日 16:02 a
-rw——-   1 xx staff          2  5月 22日 16:02 b
lrwxrwxrwx   1 xx staff          1  5月 22日 16:03 c -> a

$cat c
a
$cat a
a
$cat b
b

3)文件拷贝
$cp b c

4)验证拷贝后的结果
$cat a
b
$cat c
b

文件a的内容已经变成b的拷贝了。

总结:以后拷贝文件时,如果目标文件是个链接,一定先考虑先删除这个链接。

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s