我有一个场景,在运行脚本之前需要 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'
一些观察结果:
正确设置的应用程序不应依赖于工作目录才能正常工作,因此
screen python repos/script.py
也应该能够正常工作(不考虑python
可以避免相同的显式调用)如果将其放入
~/.screenrc
,则该命令将在每个新屏幕调用上执行。你确定你想要那个吗?