Пишу скрипт для генерации initrd, там нужно сделать find . | cpio
из текущей директории, т.е. обязательно туда зайти, иначе cpio создаст initrd внутри которого будет лишняя директория, файлы будут лежать не в корне initrd как ./init
, а как например, ./path/init
.
https://github.com/sp00f1ng/boobstrap/blob/master/boobstrap.in#L175-L179
cd $DIRECTORY
case $OUTPUT in
""|"-") find . -print0 | cpio --null --create --format=newc --verbose ;;
*) find . -print0 | cpio --null --create --format=newc --verbose > $OUTPUT ;;
esac
Из-за этого cd
ломается весь скрипт, потому что когда делается cpio > initrd.img
, мы находимся уже в другой директории, не откуда запускался скрипт, соответсвенно пытаясь сделать условный cpio > path/initrd.img
, этот path/ находится там, где скрипт запущен, а не там, куда хочет записать cpio.
Что можно придумать в данной ситуации?
И да, всё делается на чистом POSIX shell, без башизмов.