Следующий подход перечисляет все полные пути к подобранным двоичным файлам с помощью только Bash builtins:
# mywhich version 2
mywhich() ( # using a subshell the parent shell is not affected by set & shopt, ...
bin="$1"
set +f
shopt -s nullglob
IFS=':' read -a array <<<"$PATH"
IFS=""
result="$( printf '%s\n' ${array[@]/%//${bin}*} )"
[[ -n "$result" ]] && printf '%s\n' "$result" && exit 0 || exit 1
)
mywhich mkdi
Маленькое дальнейшее расследование узнало, что базовые версии хранятся в источнике ядра в /usr/src/etc
.
Так CP /usr/src/etc/rc.d/rtadvd /etc/rc.d/rtadvd
решенный мои проблемы.
Этот файл находится в основной системе, так захватите основной системный архив и извлечение что конкретный файл.
cd /tmp
wget -r ftp://ftp.fi.freebsd.org/pub/FreeBSD/releases/i386/8.2-RELEASE/base
cd /
cat /tmp/ftp.fi.freebsd.org/pub/FreeBSD/releases/i386/8.2-RELEASE/base/base.?? |
tar -xzf - etc/rc.d/rtadvd
С другой стороны, так как этот файл идентичен своему источнику, можно захватить etc/rc.d/rtadvd
от исходного дерева, любого в Вашей системе, если Вы распаковали его (/usr/src/etc/rc.d/rtadvd
) или в сети. Я ожидал бы, что файл будет в /etc/rc.d
в исходном структурном виде CVS с RELENG_8_2_0_RELEASE
тег; я не знаю, почему это не появляется там. Можно получить его от svn исходного структурного вида в release/8.2.0
ответвление.