LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 820|回复: 8

脚本文件如何得到它的所在目录?

[复制链接]
发表于 2005-6-1 13:27:29 | 显示全部楼层 |阅读模式
是它所在目录!不是运行它的当前目录阿。
发表于 2005-6-1 13:39:49 | 显示全部楼层
在脚本开头加上

CWD=`pwd`

以后要用到脚本所在目录的时候就直接用$CWD变量好了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-6-1 14:27:56 | 显示全部楼层
pwd只能得到运行它的当前目录,并不能得到它所在的目录阿。
回复 支持 反对

使用道具 举报

发表于 2005-6-1 14:29:05 | 显示全部楼层
对不起啊,是我搞错了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-6-1 14:35:36 | 显示全部楼层
不是,我的意思是假如A目录有个脚本文件,输出的是它所在目录(A目录)下所有的文件。然后我在B目录调用它时,输出的也要是A目录下面所有文件。
那个脚本文件应该怎么写?
回复 支持 反对

使用道具 举报

发表于 2005-6-1 14:51:31 | 显示全部楼层
Post by bbskill
不是,我的意思是假如A目录有个脚本文件,输出的是它所在目录(A目录)下所有的文件。然后我在B目录调用它时,输出的也要是A目录下面所有文件。
那个脚本文件应该怎么写?

不知道A脚本目录如何调用?难道都要加入/bin ...? :sleep
回复 支持 反对

使用道具 举报

发表于 2005-6-1 14:54:23 | 显示全部楼层
ls `dirname $0`


这样可以吗?

但这样还不是真正判断脚本所在的绝对位置
回复 支持 反对

使用道具 举报

发表于 2005-6-1 15:35:30 | 显示全部楼层
  1. location=`dirname $0 | sed '/^\//d'`

  2. if [ -z $location ]; then
  3.         location=`dirname $0`
  4. else
  5.         location=`pwd`/`dirname $0`
  6. fi

  7. echo $location
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-6-1 16:03:33 | 显示全部楼层
但如果这个脚本A用ln链接到了另外一个文件B,那执行B时输出的还是B的目录阿。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表