readlink -f在Linux 2.4中的替代

我有一个Java应用程序。我从应用程序调用一些batch file。 batch file通过使用readlink -f获取其自身的完整path。 但是我在Linux中得到了“command not found error”(命令未find错误)(Linux 2.4.18-3custom#2 Wed Aug 18 03:46:33 EDT 2004)。 我在批处理file.Put尝试pwd命令,但它给了我的应用程序当前directory.But我需要从本身find批处理目录。因此,pwd不能解决我的问题。 我实际上是在shell脚本上写我的batch file。 我不能安装coreutils。 readlink -f有没有其他的select,不包括pwd?

这是来自我在Linuxquestions.org的休眠博客的一个转发解决方案的例子。 你可以使你的脚本使用这个获得路径的绝对路径。 这一个适用于任何版本的Bash。 你也可以得到其他的解决方案,甚至是老的。 只要检查帖子 。

 function getabspath { local -a T=() local -i I=0 local IFS=/ A case "$1" in /*) __=$1 ;; *) __=/$PWD/$1 ;; esac while read -r -d / A; do case "$A" in ..) [[ I -ne 0 ]] && unset T\[--I\] continue ;; .|'') continue ;; esac T[I++]=$A done << . $__/ . case "$1" in */) [[ I -ne 0 ]] && __="/${T[*]}/" || __=/ ;; *) [[ I -ne 0 ]] && __="/${T[*]}" || __=/. ;; esac } 

用法:

 getabspath your/path/here <Do something with "$__"> 

考虑编译一个简单的C解决方案 。

readlink是Linux的coreutils软件包的一部分。 所以只要在你的系统上安装coreutils ,你就可以使用readlink