Linux 2.4中的readlink -f替代方案

时间:2014-08-19 14:32:10

标签: linux batch-file readlink

我有一个java应用程序。我从app调用一些批处理文件。 批处理文件使用readlink -f获取自己的完整路径。 但我得到"命令未找到错误"在Linux。(Linux 2.4.18-3custom#2 Wed Aug 18 03:46:33 EDT 2004)。 我在批处理文件中尝试了pwd命令。但它给了我的应用程序当前目录。但是我需要从自己找到批处理目录。所以,pwd并没有解决我的问题。 我实际上是在shell脚本上编写我的批处理文件。 我无法安装coreutils。 有没有替代readlink -f,它不包括pwd?

2 个答案:

答案 0 :(得分:1)

这是来自Linuxquestions.org中我forwarded solution的示例dormant blog。您可以让脚本使用它来获取路径的绝对路径。这适用于任何版本的Bash。您还可以获得其他shell的其他解决方案,即使是旧的。只需查看post

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 "$__">

考虑编译simple C solution

答案 1 :(得分:0)

readlink是Linux coreutils包的一部分。只需在您的系统上安装coreutils即可,readlink可用。