Пишу скрипт для генерации 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, без башизмов.








 , ,






URL записи