我使用miniedit(mininet的UI)和ONOS作为SDN控制器在SDN上进行POC,我想在运行拓扑时从miniedit调用ONOS,因此在python中使用了以下代码行
os.system("gnome-terminal -e 'bash -c \"/home/paxterra/onos/tools/dev/bin/onos-karaf; exec bash\"' &")
如果我以普通用户身份执行它,则调用ONOS,但抛出错误,因为此代码存在于miniedit.py中,并且我以超级用户身份运行miniedit.py。
Error : /home/paxterra/onos/tools/dev/bin/onos-karaf: line 7: onos-setup-karaf: command not found
我尝试设置环境变量PATH="/home/paxterra/onos/tools/dev/bin/"
,然后再次尝试该命令,它会出现同样的错误。
任何人都可以帮我解决这个问题。 ?
答案 0 :(得分:0)
使用sudo
时,默认情况下不保留路径变量。 Sudo
有自己的路径变量。这是一种安全设计。
因为onos-setup-karaf
不在路径中(即你使用onos-karaf的完整路径但onos-setup-karaf可能不在你工作的目录中)你应该尝试执行sudo env "PATH=$PATH" miniedit
或者你启动该程序,但你需要保留路径变量。