此test.sh
脚本:
cd test-1
source .venv/bin/activate
python test.py
deactivate
使用以下命令从 Ubuntu 20.04.6 上的终端正常运行:
nick@jetson:~$ ./test.sh
当我将其添加到启动应用程序偏好设置中时:
它不运行。出了什么问题?
这个问题与如何在登录时自动启动应用程序?不同。我不是在问如何在登录时自动启动应用程序。我是在问为什么必须使用与我在文件夹中的终端中输入的命令不同Command
的Add Startup program
命令~
。
当你创建“启动应用程序”时,底层发生的情况是:
~/.config/autostart
,其中有Exec
一行包含您指定的“命令”;引用页面上的相关部分(重点是我的):
所以失败的原因
./test.sh
很简单:它不符合 Freedesktop 的任何规范,因为它既不是完整路径也不是可执行文件的名称。还要注意,“命令”需要遵守更多规则(您可以在我链接的页面中找到它们),但通过这些检查通常是有效的:
PATH
,则需要输入完整路径,否则可以只输入可执行文件的裸名称;env
(env foo=bar executable
) 将变量注入可执行文件的环境中。如果您需要更多功能,您大多可以使用sh -c
/bash -c
(sh -c '<input command1 | command2'
),或者围绕实际脚本创建包装器脚本。如果你的脚本确实没有shebang(
#!/bin/bash
),那么一个解决方案是运行:而是。然而,“正确”的解决方案是向脚本添加一个 shebang,然后运行:
在其他上下文中需要 shebang(例如从非 Bash 的 shell 运行脚本时)才能使用 Bash 功能,例如
source
从 运行脚本时sh
。