linux spawn命令

2024-11-17 06:34:18
推荐回答(5个)
回答1:

spawn是进入expect环境后才可以执行的expect内部命令。expect是一种脚本语言,它能够代替我们实现与终端的交互,我们不必再守候在电脑旁边输入密码,或是根据系统的输出再运行相应的命令。

如果没有装expect或者直接在默认的SHELL下执行是找不到spawn命令的。所以不要用 “which spawn“之类的命令去找spawn命令。好比windows里的dir就是一个内部命令,这个命令由shell自带,用户无法找到一个dir.com或dir.exe的可执行文件。它主要的功能是给运行进程加个壳,用来传递交互指令。

扩展资料:

下面是一个能用来实现自动执行该命令的Expect脚本:

#!/usr/bin/expect

# Change a login shell to tcsh

set user [lindex $argv 0]

spawn chsh $user

expect "]:"

send "/bin/tcsh "

expect eof

exit

和其他脚本一样首行指定用来执行该脚本的命令程序,这里是/usr/bin/expect。程序第一行用来获得脚本的执行参数(其保存在数组$argv中,从0号开始是参数),并将其保存到变量user中。

第二个参数使用Expect的spawn命令来启动脚本和命令的会话,这里启动的是chsh命令,实际上命令是以衍生子进程的方式来运行的。

参考资料来源:百度百科-SPAWN (Expect编程工具语言)

回答2:

spawn是进入expect环境后才可以执行的expect内部命令。expect是一种脚本语言,它能够代替我们实现与终端的交互,我们不必再守候在电脑旁边输入密码,或是根据系统的输出再运行相应的命令。
如果没有装expect或者直接在默认的SHELL下执行是找不到spawn命令的。所以不要用 “which spawn“之类的命令去找spawn命令。好比windows里的dir就是一个内部命令,这个命令由shell自带,你无法找到一个dir.com或dir.exe的可执行文件。它主要的功能是给运行进程加个壳,用来传递交互指令。

回答3:

你的命令错了

回答4:

用whereis expect查一下expect命令到底在哪,将对应的exp文件修正。
或者使用#!/usr/bin/env expect

回答5:

是不是环境变量不对,你看一下你的环境变量里面有没有/usr/local/bin