Não é possível executar o comando na inicialização da tela GNU

Não é possível executar o comando na inicialização da tela GNU

Eu quero fazer algo semelhante ao que está escrito aquisem usar zsh (eu uso bash), mas se eu tentar iniciar a tela com

screen 'cd /home/cataldo/Programs'

Estou tendo o erro a seguir:

Cannot exec 'cd home/cataldo/Programs': No such file or directory

Sem qoutes após exec também não funciona. Aspas duplas não fazem diferença. Usar bash -c "cd .." não funciona.

Pode ser algum problema de permissão ou a tela executa comandos como um usuário especial na inicialização?

Muito obrigado pela sua ajuda!

screen --version
Screen version 4.00.03jw4 (FAU) 2-May-06

cat /etc/debian_version 
6.0.3

Responder1

Não funciona porque cdé um comando interno do shell (try which cd). A tela tem umcomando chdirque você pode usar para atingir seu objetivo: Coloque o seguinte dentro do seu .screenrc:

chdir /home/cataldo/Programs

Agora inicie a tela e você deverá estar no diretório especificado.

Responder2

screennão sabe, cdpois é um shell embutido, então screennão pode executá-lo. No entanto, screenpossui um comando interno de chdir. Se você executar chdirsozinho a partir da screenlinha de comando, todas as novas janelas da screensessão iniciarão em $HOME. Se você executar chdir /home/cataldo/Programsa partir da screenlinha de comando, todas as novas janelas da screensessão iniciarão em formato /home/cataldo/Programs.

Se você deseja abrir 3 janelas em diretórios diferentes ao iniciar uma nova screensessão, ~/.screenrcdefina o diretório com chdire inicie imediatamente uma nova janela.

# Start these windows when screen starts up
chdir /home/cataldo/Programs
screen 0
chdir /usr/local/bin
screen 1
chdir /tmp
screen 2
chdir

De man 1 screen(preste atenção na última linha)

chdir [directory]
Change the current directory of screen to the specified directory or,
if  called  without  an argument,  to your home directory (the value of
the environment variable $HOME).  All windows that are created by means
of the "screen" command from within ".screenrc" or by means of "C-a : 
screen ..." or "C-a c" use this as their default directory.  Without a 
chdir command, this would be the directory from which screen was invoked.  
Hardcopy  and  log  files  are  always written  to  the window's default 
directory, not the current directory of the process running in the window.  
You can use this command multiple times in your .screenrc  to  start  
various windows  in  different default directories, but the last chdir value 
will affect all the windows you create interactively.

Responder3

O que você diz não faz muito sentido. Mesmo se cdfosse um comando real, screen apenas mudaria de diretório e sairia imediatamente, o que não faria nenhum bem a ninguém.

Se você deseja iniciar apenas uma sessão de tela específica em um diretório específico:

(cd home/cataldo/Programs && screen)

Isso mudará o diretório, iniciará a tela com um shell e retornará ao diretório existente quando a tela sair.

Responder4

Você pode adicionar stuff "cd /home/cataldo/Programs^M"ao seu ~/.screenrcou quando solicitado usandoC-a :

informação relacionada