Creo que lo mejor para ejecutar mis shells en máquinas remotas en emacs es usar TRAMP (usar el sshcomando en un shell local no funciona para mis necesidades). Sin embargo, solo sé cómo ejecutar un shell TRAMP si primero visito un archivo remoto C-x C-fy luego lo hago M-x shelldesde ese búfer. Sin embargo, me gustaría abrir un shell en una máquina remota, usando TRAMP, antes de abrir cualquier archivo en ese host remoto, pero no puedo encontrar ninguna explicación sobre cómo hacerlo en mis búsquedas. ¿Es posible hacer eso?
6

sshpass? ¿Prefieres ingresar tu contraseña cada vez?Respuestas:
Vagabundo entra en juego, cuando el directorio predeterminado es remoto. Por lo tanto, puede cambiarlo, como lo hace al abrir un archivo remoto (o directorio) de antemano.
Pero podrías escribir un pequeño comando como este:
Entonces puedes llamar
M-x my-shellfuente
M-x customize-variableexplicit-shell-file-namea\bin\bashpara evitar perder los errores de concha.my-shellfunción. Se construye con éxito una conexión TRAMP de mi portátil con Windows 7 a mi computadora Mac, pero después de que salga conenv: C:/msys64/usr/bin/bash.exe: No such file or directory exitCreo que es debido a que en mi.emacstramp-encoding-shellse establece enC:/msys64/usr/bin/bash.exeSi sólo se pude cambiar el valortramp-encoding-shella/bin/bashque creo que iba a salir bien. ¿Cómo hacerlo sin problemas? Gracias.... (let ((default-directory "/ssh:user@host:")(tramp-encoding-shell "/bin/bash")) (shell))). No he probado esto, aunque.Utilizo dired para acceder a la máquina remota y abrir un shell allí.
Aquí está la función que uso, tomada y modificada de la configuración de emacs de Tikhon Jelviss :
Ejemplo:
fuente
Aunque no se deja demasiado claro en el manual, le
C-u M-x shellpermite especificar el nombre del búfer de shell, y lo más importante en su caso, le permite especificar elDefault directory, que puede tomar una cadena al igual que Tramp/ssh:server:/my/path.Una alternativa es abrir dired (
C-x d) en lugar de un archivo real, siM-x shelldesde el directorio, el shell se abre con el contexto del directorio dired.fuente
Aquí hay otro enfoque:
M-x cdpara cambiar el directorio predeterminado del búfer al directorio remoto deseadoM-x shell, que abrirá un shell en la máquina remotafuente