环境介绍:
操作系统:solaris 10
主机名称:fly007

    用户:oracle  SHELL:/usr/bin/csh,执行du -sh *报du: illegal option -- p错误

fly007% id
uid=200(oracle) gid=120(oinstall)
fly007% bash
fly007% pwd  //该路径在根文件系统,为oracle用户的家目录
/export/home/oracle
bash-3.00$ echo $SHELL
/usr/bin/csh
bash-3.00$ du -sh * //在空间需要清理的时候,使用du -sh *报错,对于清理空间造成很大的不便
du: illegal option -- p
usage: du [-a] [-d] [-h|-k] [-r] [-o|-s] [-H|-L] [file ...]
bash-3.00$ du -sh ./* | head -5
0K   ./-p
504K   ./0116
1.4M   ./0117_patch
1K   ./0421.sh
153M   ./0503bak
bash-3.00$ cd /opt/oracle/ //相同的用户进入其他目录,则可以使用du -sh *
bash-3.00$ du -sh * | head -5
1.9M   fly_0926bak.dmp
2K   fly_pfile_1229
2K   fly_pfile_20111110
32M   OPatch
29M   OPatch_1229.bak

用户:root  SHELL:/sbin/sh  执行du -sh *报du: illegal option -- p错误

bash-3.00# id
uid=0(root) gid=0(root)
bash-3.00# echo $SHELL
/sbin/sh
bash-3.00# pwd  //该路径在根文件系统,为root用户的家目录
/
bash-3.00# du -sh *
du: illegal option -- p
usage: du [-a] [-d] [-h|-k] [-r] [-o|-s] [-H|-L] [file ...]
bash-3.00# du -sh ./* | head -5
1K   ./-p
1K   ./1
1K   ./1.sh
15K   ./1.txt
1K   ./3.sh
bash-3.00# cd /kernel/ //相同的用户进入其他目录,则可以使用du -sh *
bash-3.00# pwd
/kernel
bash-3.00# du -sh *
497K   crypto
102K   dacf
31M   drv
264K   dtrace
125K   exec

用户:fly007 SHELL:/bin/sh 可以正常执行du -sh *

$ id
uid=893(fly007) gid=892(gfly007)
$ echo $SHELL
/bin/sh
$ pwd
/home/fly007
$ du -sh *
0K   1.txt
0K   2.txt
3K   system.bak

从上面的测试看来,应该是和用户的SHELL有关导致,在solaris 10操作系统/bin/sh的用户是
可以正常使用du -sh *的,/usr/bin/csh和/sbin/sh不能正常使用du -sh *来查看当前路径下
所有文件和文件夹的大小,另外为什么cd进入到非家目录后就可以正常执行du -sh *,不明白,
在linux侧,目前还没有碰到这种情况。