我在 ODROID C0 上使用 Lubuntu。有一个 Python 脚本需要自动启动。我导航到
[开始菜单]>首选项>LXSession 的默认应用程序
,然后导航到自动启动选项卡并添加xterm -e "python /path/to/script.py"
。 xterm 自动启动可以正常工作,但会显示错误
xterm: 无法 execvp “python: 没有此文件或目录
关于如何正确配置此 Python 脚本的自动启动,您有什么想法吗?
谢谢。
答案1
请使用xterm -e python /path/to/script.py
,但不带引号。
您的"
引号没有按照您想要的方式运行。xterm -e
正在尝试"python
以/path/to/script.py"
作为其参数运行,而不是以python
作为/path/to/script
其参数运行。在这种情况下,您可以简单地省略引号。
在 shell 脚本中或以交互方式运行 shell 时,引号被特殊处理和删除引文执行。但是,对于您在LXSession 配置→自动启动→手动自动启动的应用程序。
幸运的是,即使xterm -e
在 Ubuntu 中执行单词拆分在一个参数上将其视为命令,它还接受多个参数。这就是为什么-e
必须是最后一个选项——其他一切都被解释为命令的一部分。例如,如果你运行xterm -e nano foo
,它会在 XTerm 窗口中打开。foo
作为nano
man xterm
说:
-e 程序 [ 参数 ... ] 该选项指定程序(及其命令行 参数)在终端窗口。它还设置 窗口标题和图标名称作为程序的基本名称 被执行,如果-T也不-n在命令中给出 线。 这必须是命令行上的最后一个选项。
假设您不想运行路径名称中包含空格的脚本,您只需删除引号:
xterm -e python /path/to/script.py
我还想到了另外两个警告:
- 脚本完成后
python
退出,然后 XTerm 窗口也会退出。如果您不想这样,那么您可以向 Python 脚本添加等待用户交互的代码,或者您可以编写一个包装器 shell 脚本(或任何类型的包装器脚本),运行python /path/to/script.py
后等待用户交互。 - 终端在 Lubuntu 中运行良好,但默认的 GUI 终端仿真器是LX终端。如果您更愿意使用它,您可以使用
lxterminal
而不是xterm
。命令lxterminal
接受-e
并以与 相同的方式处理它xterm
,因此这看起来像lxterminal -e python /path/to/script/py
。与 XTerm 一样,LXTerminal 将在命令运行完成后退出。