如果脚本不在 $PATH 中,如何在屏幕内自动运行脚本

如果脚本不在 $PATH 中,如何在屏幕内自动运行脚本

我有一个场景,在运行脚本之前需要 cd 进入目录:

cd repos; python script.py

但应将其设置为在屏幕启动时自动运行。所以.screenrc我有这个:

screen -t "cd repos; python script.py"

但这不起作用,因为这cd repos是错误的。如何 cd 进入该目录?

答案1

如果您希望在运行 screen 时默认发生这种情况,那么您需要编辑您的.screenrc文件。您可以使用目录指令让新的屏幕窗口在打开时更改目录,但您需要在满足您的需求后显式重置该目录,以便较新的窗口不受影响。

# .screenrc settings to cd to repos and run python-script.py
chdir /full/path/to/repos
screen -t "Python Script" ./python-script.py

# reset the default directory for new windows.
chdir $HOME
screen -t "New Window" bash
screen -t "SSH Session" ssh [email protected]

请记住,这将从本质上将“。/python-script.py”设置为该窗口的shell,因此当python-script.py完成时,窗口将关闭。

答案2

该选项-t适用于标题,因此在您的上下文中是错误的。

我会写

screen sh -c 'cd repos; python script.py'

一些观察结果:

  1. 正确设置的应用程序不应依赖于工作目录才能正常工作,因此screen python repos/script.py也应该能够正常工作(不考虑python可以避免相同的显式调用)

  2. 如果将其放入~/.screenrc,则该命令将在每个新屏幕调用上执行。你确定你想要那个吗?

相关内容