Файловая система Linux одна, а вот устройств, к ней подцепленных, может быть много. Свободное место это свойство устройств, а программа устанавливается в указанный путь файловой системы.
Монтирование устройств раньше выполнялось при помощи команды mount, а теперь при помощи юнитов systemd. Я предполагаю, что информация о смонтированных устройствах как-то доступна
В виде записей в файле /proc/mounts по строчке на точку монтирования:
- The 1st column specifies the device that is mounted.
- The 2nd column reveals the mount point.
- The 3rd column tells the file-system type.
- The 4th column tells you if it is mounted read-only (ro) or read-write (rw).
- The 5th and 6th columns are dummy values designed to match the format used in /etc/mtab.
Этот вопрос закрыт на stackoverflow - https://stackoverflow.com/questions/479276/how-to-find-out-the-free-disk-spac...
(потому что они неправильно модерируют)
Вопрос был о том, нужен ли /dev для узнавания свободного места по имени устройства или не нужен, задавал его дважды, никто не ответил.
Воспользоваться командой df, передав ей путь в качестве параметра, было бы слишком просто
df ~ --block-size=1 --output="avail"
Avail
568533991424
Задавали и такой вопрос - https://unix.stackexchange.com/questions/399373/get-file-system-free-space-in...
И там написано, что информация получается системным вызовом из ядра, никаких /dev !!!
1) Portage решает задачу установки файлов в файловую систему
2) глушение вывода не нужно (потому что лучше фильтрованные логи), но если очень надо, то можно
3) для узнавания свободного места /dev не требуется
Таким образом, конкретно portage можно было бы написать таким образом, чтобы он не требовал наличия /dev.
То, что какие-то другие программы, вроде autotools, используют /dev/null - это не относится к проекту portage. А чтобы сделать всё хорошо, надо улучшать все доступные места. Например portage.