Сценарии не могут изменить среду своего родительского processe. Из-за этого потеряны любые изменения среды, сделанные в сценарии.
Для запущения скрипта в том же процессе можно 'получить' сценарий как это
. /path/to/script.sh args
Это не возможно, потому что было бы трудно реализовать и редко полезный. Сокеты намного более сложны, чем каналы:
Поскольку сокеты двунаправлены, они часто используются для передачи в соответствии с двунаправленными протоколами. При введении данных в разговор другая сторона могла бы отправить ответ на данные, и нет никакого способа диспетчеризировать ответ на правильную запрашивающую сторону. Это значительно уменьшает полноценность разрешения инжекции данных на сокетах.
При попытке связаться с тем же сервером как существующий клиент и не лавировать на существующий разговор, уже существует способ сделать это: свяжитесь сервер таким же образом (откройте сокет в файловой системе, или к порту TCP или UDP). Если сокет является неназванным между двумя процессами, это - хорошая подсказка, что Вы, как предполагается, не присоединяетесь, таким образом, операционная система не помогает.
С датаграммным сокетом (не случай здесь), Вы не могли непосредственно ввести данные, потому что оболочка только понимает потоки байтов, это не знает для вызова send
вместо write
отправить пакет.
Если у Вас есть сотрудничество одной конечной точки, можно сказать, делают дескриптор файла использования передающим 1 2 3.
Иначе можно сделать процесс, который имеет открытый сокет, отправляют сами данные, с ptrace
(это что gdb
использование под капотом). Это приостанавливает процесс, очень дизайном, так, чтобы Ваши злые шутки не путали процесс слишком много. Даже с приостановленным процессом, Вы рискуете создания структур данных процесса, несовместимых с действительностью данных или модификаций среды, которые Вы ввели. (Обратите внимание, что, даже если бы система позволила вводить данные по сокету, было бы подобное, если меньший, риск путания процесса с этими несоответствиями.)
Я сказал бы, что это возможно, но оба процесса должны сотрудничать, чтобы сделать это. У Вас может быть один процесс, отправляют дескриптор файла по сокетному соединению с другим процессом. Я нашел этот пример, который, кажется, работает над актуальным Arch машина Linux.