readlink:非法选项 – f

最近脚本工作正常,但是从某些日子我收到这样的消息,而运行readlink -f "$0"命令:

 readlink: illegal option -- f usage: readlink [-n] [file ...] 

我正在运行以下代码进行debugging:

 #!/bin/sh DIR=`pwd` RLPATH=`which readlink` RLOUT=`readlink -f -- "${0}"` DIROUT=`dirname -- ${RLOUT}` echo "dir: ${DIR}" echo "path: ${PATH}" echo "path to readlink: ${RLPATH}" echo "readlink output: ${RLOUT}" echo "dirname output: ${DIROUT}" 

输出:

 # ./debug.sh readlink: illegal option -- f usage: readlink [-n] [file ...] usage: dirname string [...] dir: /home/svr path: /sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/root/bin path to readlink: /usr/bin/readlink readlink output: dirname output: 

哪里不对 ?

这是你正在运行的FreeBSD版本的一个问题。 旧版本不支持-f选项。

解决这个问题的最简单的方法是使用GNU coreutils端口(/ usr / ports / sysutils / coreutils),它会给你“greadlink”。 这是我在脚本中使用的。