Я думаю, что документация Bash несколько вводит в заблуждение по этому вопросу. Глядя на код, даже возвращаясь к версии 2.04, где были введены сетевые перенаправления, /dev/tcp
и /dev/udp
работают следующим образом:
configure
проверяет, поддерживаются ли различные сетевые функции; если да, то если сетевое перенаправление включено (, что имеет место по умолчанию ), встроен внутренний сетевой код; /dev/tcp
и/dev/udp
(в правильном формате )обрабатываются внутри; в противном случае выдается предупреждение («/dev/ (tcp|udp )/host/port не поддерживается без подключения к сети» )и Bash пытается открыть указанный путь в системе; Это сводится к:
/dev/tcp
и /dev/udp
всегда будут обрабатываться внутри; /dev/(tcp|udp)/host/port
, то он будет использован, иначе, по всей вероятности, перенаправление не удастся; /dev/(tcp|udp)/host/port
, то это будет использоваться, иначе, по всей вероятности, перенаправление не удастся. /dev/tcp
существует в некоторых системах, но, насколько мне известно, ни одна из них не поддерживает ту же абстракцию, что и Bash. В Solaris /dev/tcp
используется с инструментом ndd
для запроса и изменения конфигурации сети. В XTI(см. также открытую группу , если вы являетесь участником ), функцию t_open
можно использовать с /dev/tcp
для открытия TCP-соединения, но она не не используйте настройку на основе пути -, существует отдельная структура данных для указания целевого хоста и порта (и других параметров ).