Como posso executar automaticamente um script dentro da tela se o script não estiver em $ PATH?

1

Eu tenho um cenário em que preciso criar um cd em um diretório antes de executar um script:

cd repos; python script.py

Mas deve ser configurado de forma que seja executado automaticamente quando a tela for iniciada. Então, em .screenrc eu tenho isso:

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

exceto que isso não funciona porque o cd repos está errado. Como faço cd para este diretório?

    
por MrD 27.09.2011 / 15:46

2 respostas

2

Se você quiser que isso aconteça por padrão ao executar a tela, será necessário editar o arquivo .screenrc . Você pode usar a diretiva chdir para ter uma nova janela de tela mudando de diretórios ao abri-la, mas você vai querer explicitamente redefini-la depois que suas necessidades forem atendidas, para que as janelas não são afetadas.

# .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]

Tenha em mente que isso essencialmente configurará "./python-script.py" como o shell para aquela janela, então quando o python-script.py estiver terminado a janela será fechada.

    
por 27.09.2011 / 16:19
1

A opção -t é para o título, por isso está errada no seu contexto.

Eu escreveria

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

Algumas observações:

  1. um aplicativo de configuração correta não deve depender do diretório de trabalho para funcionar corretamente, então screen python repos/script.py deve funcionar também (não levando em conta que a mesma invocação explícita de python poderia ser evitada)

  2. se você colocar isso em ~/.screenrc , o comando será executado em cada nova tela invokation. Tem certeza de que quer isso?

por 27.09.2011 / 16:03

Tags