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

5

Eu quero fazer algo parecido com o que está escrito aqui sem usar o zsh (eu uso o bash), mas se eu tentar para iniciar a tela com

screen 'cd /home/cataldo/Programs'

Eu recebo o seguinte erro:

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. Usando bash -c "cd .." não funciona.

Pode haver 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
    
por Gismo Ranas 30.03.2012 / 11:11

4 respostas

10

Não funciona porque cd é um comando interno do shell (tente which cd ). A tela tem um comando chdir que você pode usar para atingir sua meta: coloque o seguinte dentro do seu. screenrc:

chdir /home/cataldo/Programs

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

    
por 30.03.2012 / 12:02
7

screen não sabe sobre cd porque é um shell embutido, então screen não pode executá-lo. No entanto, screen tem um comando interno de chdir . Se você executar chdir sozinho a partir da linha de comando screen , todas as novas janelas na sessão screen serão iniciadas em seu $ HOME. Se você executar chdir /home/cataldo/Programs da linha de comando screen , todas as novas janelas na sessão screen serão iniciadas em /home/cataldo/Programs .

Se você deseja abrir três janelas em diretórios diferentes quando iniciar uma nova sessão screen , no seu ~/.screenrc defina o diretório com chdir e 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.
    
por 18.05.2012 / 22:46
3

O que você diz não faz muito sentido. Mesmo se cd fosse um comando real, a tela apenas mudaria de diretório e logo em seguida sairia, o que não faria bem a ninguém.

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

(cd home/cataldo/Programs && screen)

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

    
por 30.03.2012 / 12:51
2

Você pode adicionar stuff "cd /home/cataldo/Programs^M" ao seu ~/.screenrc ou no prompt usando C-a :

    
por 10.08.2016 / 16:42