Недавно скрипт работал нормально, но через несколько дней я получаю такое сообщение при запуске readlink -f "$0"
команда:
readlink: illegal option -- f
usage: readlink [-n] [file ...]
Я запускал следующий код для отладки:
#!/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». Это то, что я использую в своих скриптах.