gnu - para - lenguaje de programacion octave
¿Cómo hacer que la pantalla GNU inicie una nueva ventana en el directorio de trabajo ACTUAL? (8)
De forma predeterminada, cuando crea una nueva ventana en la pantalla de GNU, se iniciará en el directorio donde se invoca la pantalla. Quiero iniciar una nueva ventana en la pantalla de GNU en el directorio de trabajo actual de la ventana en la que estoy actualmente. ¿Cómo hacerlo? ¡Gracias!
En su .screenrc
ponga una línea que use el comando chdir
si quiere el mismo cada vez.
Si tiene una sesión de pantalla en ejecución dentro de esa sesión, puede escribir:
screen -X chdir [arg]
Sin un argumento, será su directorio de inicio, el mismo resultado que escribir cd
.
Si tiene una secuencia de comandos (esto es una programación de preguntas y respuestas y un sitio) o está fuera de la pantalla y la pantalla se está ejecutando, puede emitir:
`which screen` -x -X chdir [arg]
Lo cual es probable que siga con la ejecución de un nuevo proceso en pantalla con:
`which screen` -x -X screen [command to run in that dir] [args for the command]
Todavía no he encontrado una manera de averiguar qué era y volver a cambiarlo (en un script), por lo que si alguien quisiera actualizar esta respuesta con eso, por favor, hágalo.
La solución simple es colocar las siguientes cadenas en su ~ / .screenrc y luego Cx para abrir nuevas ventanas:
atar ^ x
enlazar ^ x cosas "screen -X chdir / $ PWD; screen ^ M"
http://www.michaelkelleher.info tiene más consejos para usuarios de pantallas intermedias / avanzadas.
Dado que el sitio parece haberse ido, puede encontrar el archivo aquí: el sitio web personal de Michael Kelleher en Archive.org
No encontré ninguna solución que funcionara cuando ya tiene un proceso ejecutándose en una ventana, así que se me ocurrió una idea. Agregué las siguientes líneas a mi .bash_profile:
scr_cd()
{
cd $1
screen -X chdir $PWD
}
if [ "$TERM" == ''screen'' ]; then
alias cd=scr_cd
fi
El directorio de trabajo de la pantalla se actualiza cada vez que cambia un directorio. A alguien puede que no le guste este enfoque, pero funciona como un encanto.
Para hacer que la pantalla abra una nueva pestaña / ventana en el directorio actual, puede agregar el siguiente código a su archivo .screenrc
:
bind c stuff "screen bash^M"
Esto hará que el comando Ctrl + a c abra nuevas pestañas / ventanas en el directorio de la ventana / pestaña actual.
Nota: debe asegurarse de que la screen
no inicie un shell de inicio de sesión de manera predeterminada porque eso hará que el shell comience en el directorio predeterminado para un shell de inicio de sesión en lugar del directorio actual. Esto significa que en su archivo .screenrc
, su comando de shell
no puede incluir un carácter de guión (''-'').
Por ejemplo, esto es incorrecto (es decir, iniciará un shell de inicio de sesión):
shell -$SHELL
Pero esto es correcto (es decir, no iniciará un shell de inicio de sesión):
shell $SHELL
Nota 2: Desafortunadamente, este método no se comporta exactamente como el comando predeterminado de nueva ventana / pestaña en la screen
. En su lugar, escribe el comando en la ventana actual y lo ejecuta para crear la nueva ventana / pestaña, por lo que no funcionará durante un proceso de shell de larga ejecución. En otras palabras, este método abreviado de teclado solo se puede ejecutar siempre que se puedan ejecutar los comandos de shell normales.
Nota 3: Si desea que la screen
abra nuevas ventanas / pestañas en el directorio actual y abra un shell de inicio de sesión , puede agregar el siguiente código a su archivo .screenrc
:
bind c stuff "screen bash -l^M"
Quizás esto sea específico de Byobu, pero simplemente escribiendo la screen
abre una nueva ventana en el directorio actual.
También podrías correr:
screen -X eval "chdir $(pwd)"
O si desea iniciar una nueva ventana tan pronto como configure chdir, use:
screen -X eval "chdir $(pwd)" screen
Tengo una solución casi perfecta para bash. :)
Si nunca usa una
password
para establecer la contraseña de bloqueo de pantalla, solo agregue esto a$HOME/.bash_profile
:export PROMPT_COMMAND=''screen -p $WINDOW -X chdir "$PWD"''
¿Necesitas contraseña? con este:
# the digest of password "abc" is ID1wIq4l2t7s6 export PROMPT_COMMAND=''screen -p $WINDOW -X eval "password none" "chdir /"$PWD/"" "idle 0 password ID1wIq4l2t7s6"''
Solo espero que los desarrolladores de pantalla agreguen la variable de entorno PWD
tan pronto como sea posible.
Ver el comando gnu screen chdir
. Todas las ventanas nuevas creadas en pantalla usan esto como su directorio inicial. Usando esto puedes hacer algo como
chdir /home/dan/newscreendir
screen
Y su nueva ventana (junto con cualquier otra ventana creada en el futuro) estará en el directorio establecido. Si siempre va a ser el directorio de trabajo actual, es posible que pueda configurar algo en su screenrc
para hacer esto en un solo comando.
Ver la página del manual de gnu screen, es bastante completa.
La pantalla no puede acceder a su variable de shell ni ejecutar comandos backticked. Lo más cerca que puedo llegar a hacerlo con un solo clic es con un pequeño script de bash como este
screen -X setenv currentdir `pwd`
screen -X eval ''chdir $currentdir'' screen
o mas compacto
screen -X eval "chdir $PWD"
screen -X
envía el comando a la sesión de pantalla actualmente en ejecución. La primera línea crea una variable llamada currentdir
. La segunda línea envía el currentdir
al comando chdir
y luego crea una nueva ventana de pantalla.