Tengo las siguientes dos líneas de código en mi archivo init.el:
(setq shell-file-name "bash")
(setq shell-command-switch "-ic")
Intenté ejecutar el siguiente script para obtener una lista de ejecutables utilizando el script de shell dmenu_path.
(defun dmenu-path-out ()
(shell-command-to-string "dmenu_path"))
Veo el siguiente error:
bash: cannot set terminal process group (-1): Inappropriate ioctl for device
bash: no job control in this shell
[
0ad
...
¿Cómo puedo evitar que bash devuelva ese error cuando lo uso shell-command
?
shell-command
bash
wdkrnls
fuente
fuente
Respuestas:
El
-i
indicador solicita que Bash se ejecute en modo interactivo, lo que requiere un terminal. La solución es dejar lashell-command-switch
variable en su valor predeterminado, que es justo-c
.Si realmente necesita ejecutar Bash en modo interactivo, deberá ejecutarlo en un pseudo-terminal, mediante el uso
start-file-process
deprocess-connection-type
Linked tot
.fuente
gnome-terminal
, ejecutaecho
y deja la sesión de Bash en ejecución y lista para tomar nuevos comandos(start-file-process-shell-command "peekaboo" "*Messages*" "gnome-terminal -- bash -c 'echo Peekaboo!; bash'")
:; cualquier salida del comando Elisp se envía al*Messages*
búfer. Tenga en cuenta que usé enstart-file-process-shell-command
lugar destart-file-process
, por lo que no necesito dar la ruta a los programas de shell.¿Agregaste
-i
para obtener bash para expandir alias? Si es así, como se indica en /programming/12224909 , incluyaen tus .emacs y
en tu .bashrc. El primero hace que su .bashrc se ejecute en sus shells secundarios, y el segundo permite la expansión de alias en shells bash sin inicio de sesión.
Puede ir mejor creando un script de shell separado con sus alias y la línea shopt, y usándolo como el valor BASH_ENV; eso puede correr más rápido que tu ~ / .bashrc completo.
fuente