No se puede ejecutar el comando al iniciar la pantalla GNU

No se puede ejecutar el comando al iniciar la pantalla GNU

quiero hacer algo parecido a lo que esta escrito aquísin usar zsh (yo uso bash), pero si intento iniciar la pantalla con

screen 'cd /home/cataldo/Programs'

Obtuve el siguiente error:

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

Sin citas después del exec tampoco funciona. Las comillas dobles no hacen ninguna diferencia. Usar bash -c "cd .." no funciona.

¿Podría ser algún problema de permisos o la pantalla ejecuta comandos como un usuario especial al inicio?

¡Muchas gracias por su ayuda!

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

cat /etc/debian_version 
6.0.3

Respuesta1

No funciona porque cdes un comando integrado en el shell (pruebe which cd). La pantalla tiene uncomando chdirque puedes usar para lograr tu objetivo: coloca lo siguiente dentro de tu .screenrc:

chdir /home/cataldo/Programs

Ahora inicie la pantalla y debería estar en el directorio especificado.

Respuesta2

screenNo lo sabe cdporque es un shell incorporado, por lo que screenno puedo ejecutarlo. Sin embargo, screentiene un comando incorporado de chdir. Si lo ejecuta chdirsolo desde la screenlínea de comando, todas las ventanas nuevas de la screensesión se iniciarán en su $HOME. Si ejecuta chdir /home/cataldo/Programsdesde la screenlínea de comando, todas las ventanas nuevas de la screensesión comenzarán en formato /home/cataldo/Programs.

Si desea abrir 3 ventanas en directorios diferentes cuando inicia una nueva screensesión, defina ~/.screenrcel directorio con chdiry luego inicie inmediatamente una nueva ventana.

# 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 atención a la última línea)

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.

Respuesta3

Lo que dices no tiene mucho sentido. Incluso si cdfuera un comando real, la pantalla simplemente cambiaría de directorio y luego saldría inmediatamente, lo que no le haría ningún bien a nadie.

Si solo desea iniciar una sesión de pantalla específica en un directorio en particular:

(cd home/cataldo/Programs && screen)

Eso cambiará de directorio, iniciará la pantalla con un shell y regresará a su directorio existente cuando salga de la pantalla.

Respuesta4

Puede agregar stuff "cd /home/cataldo/Programs^M"a su ~/.screenrco en el mensaje usandoC-a :

información relacionada