Конвейеры не работают с исходным кодом, потому что вы не можете обрабатывать входные данные по мере их поступления. Перед началом обработки необходимо загрузить весь файл. Еще хуже, когда вам нужно несколько файлов для компиляции (например, файлы .h). Если вы читали из стандартного ввода-вывода, вам нужно было бы выполнить потоковую передачу всех необходимых файлов с помощью некоторого метода определения разрывов файлов между файлами, которые вы передали по конвейеру. Проблемы просто растут оттуда.
Идея конвейера заключалась в том, что это будет серия простых задач. Компиляция кода НЕ простая задача, поэтому она никогда не создавалась как часть конвейера. Также теория конвейера гласит, что все коммуникации между процессами в конвейере должны осуществляться в виде обычного текста, чтобы облегчить переносимость отдельных компонентов. По определению, вывод cc
или yacc
или ld
или чего-либо еще, участвующего в компиляции кода, представляет собой двоичные данные, которые не соответствуют модели.
Как указано в одном из комментариев, у вас, похоже, был установлен псевдоним, поэтому вызов nvim
непосредственно в оболочке работал.
После удаления псевдонимов вы больше не сможете работать с nvim
. Проблема, с которой вы столкнулись, похоже, заключается в том, что ваш $PATH
установлен неправильно. Кажется, у вас есть /home/username/bin/neovim/squashfs-root/usr/bin/nvim
в вашем $PATH
, но это полный путь к самому двоичному файлу nvim
, а не путь к каталогу, в котором он находится... $PATH
принимает только каталоги, а не сами файлы. В данном случае система пытается найти его на /home/username/bin/neovim/squashfs-root/usr/bin/nvim/nvim
, что явно недопустимо...
Вы можете исправить это, добавив /home/username/bin/neovim/squashfs-root/usr/bin
вместо неправильного пути к вашей $PATH
переменной.