![如何在给定的 SHELL PID 中运行命令](https://linux22.com/image/105516/%E5%A6%82%E4%BD%95%E5%9C%A8%E7%BB%99%E5%AE%9A%E7%9A%84%20SHELL%20PID%20%E4%B8%AD%E8%BF%90%E8%A1%8C%E5%91%BD%E4%BB%A4.png)
我以普通用户身份登录到 /bin/bash 中的系统,然后我需要运行一个 perl 脚本,该脚本依次启动一个 ksh shell。 Perl 脚本完成后,两个 shell 都处于活动状态(bash 和 ksh),我如何编写一个从 bash 触发的脚本,然后它将启动 perl 脚本,并且后续命令需要在新启动的 ksh 中运行。截至目前,在 perl 脚本挂起后编写的命令.. 并运行直到我退出 ksh.. 我能够看到两个 SHELL PID,但不知道如何在第一个脚本中运行脚本时在第二个命令中运行命令..
例子:
#!/bin/bash
pathtoperl=/path/to/perl/script
command1
command2
##call perl command which initiates a ksh among other stuff
$pathtoperl/perlscript -arguments
command3 #need to be run in new ksh, not in current /bin/bash
command4 #need to be run in new ksh, not in current /bin/bash
答案1
如果您是父进程或同级进程,则可以保留对 ksh 进程的 stdin 的引用并以这种方式发送命令,但通常,您不能以这种方式向随机运行的进程发送命令。因此,在您的示例中,您可以使用 perl 脚本将命令发送到 stdin 上的 ksh。但是您的登录 bash 脚本在 Perl 脚本退出后并不知道正在运行的 ksh。