【发布时间】:2013-11-15 15:50:06
【问题描述】:
如何在 bash 脚本中重新定义命令,以便从 bash 脚本调用的 python 脚本在通过 pexpect 调用时执行重新定义的版本?
test.sh
#!/bin/bash
function scp(){
echo "Skip SCP"
}
export -f scp
python test.py
test.py
import pexpect
scp = pexpect.spawn("scp")
scp.expect([pexpect.EOF,pexpect.TIMEOUT],timeout=1500)
print scp.before
在这个例子中,我期望(并且希望)看到的是:
跳过 SCP
但我实际看到的是:
用法:scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
[-l 限制] [-o ssh_option] [-P 端口] [-S 程序]
[[user@]host1:]file1 ... [[user@]host2:]file2
我可以更改有关 shell 脚本的任何内容,但是 python 来自第三方并且被复制到许多不同的项目中,因此更改它是不切实际的。
【问题讨论】:
-
您可以将
scp设为可执行脚本,并设置$PATH以便首先找到您的scp版本。