readlink: opção ilegal - f

1

Recentemente, o script estava funcionando bem, mas, a partir de alguns dias, recebi essa mensagem enquanto executava o comando readlink -f "$0" :

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

Eu estava executando o seguinte código para depurar:

#!/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}"

Saída:

# ./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:

O que está errado?

    
por Scott 07.12.2012 / 11:10

1 resposta

1

Este é um problema com a versão do FreeBSD que você está executando. Versões mais antigas não suportam a opção -f.

A maneira mais fácil de contornar isso é usar a porta GNU coreutils (/ usr / ports / sysutils / coreutils) que lhe dará "greadlink". Isso é o que eu uso em meus scripts.

    
por 23.05.2014 / 12:46