Re: Emacs shell-command (M-!) e bashrc
On Tue, Oct 17, 2017 at 09:21:29AM +0200, Teodoro Santoni wrote:
> Ciao,
>
> Il 09/10/17, Felipe Salvador<felipe.salvador@gmail.com> ha scritto:
> > Buonasera lista,
> > se invoco una shell da emacs con 'M-x shell' bash 'parsa' regolarmente
> > bashrc. Se invece da emacs lancio un singolo comando con 'M-!' no.
> > Mi ritrovo quindi (fra l'altro) senza aliases e non riesco a capire il
> > perché di questo comportamento.
>
> Bash da M-! non è una shell interattiva, quindi non essendo in
> modalità interattiva non importa .bashrc.
> Dovresti trovare il modo da emacs di passare la variabile d'ambiente
> BASH_ENV='$HOME/.bashrc' a bash quando parte.
Grazie Teodoro,
ho provato senza successo:
BASH_ENV='$HOME/.bashrc' emacs foo
come tu indichi M-! non è una shell interattiva, in rete suggeriscono di
aggiungere lo switch '-i' per l'esecuzione di bash:
(setq shell-command-switch "-ic")
Questo funziona, ma produce un secondo indesiderato "effetto collaterale", l'errore:
bash: cannot set terminal process group (-1): Invalid argument
bash: no job control in this shell
dovuto, pare, al fatto che M-! non fornisce un terminale. Da questa situazione se ne
può venire fuori o redirigendo stderr a /dev/null(na zozzeria). O
agendo su emacs[1].
[1] https://emacs.stackexchange.com/questions/3447/cannot-set-terminal-process-group-error-when-running-bash-script
Non essendo la questione di vitale importanza mi accontenterò, ove
necessario, di un C-u M-! bash -ic $comando 2>/dev/null
Ciao
--
Felipe Salvador
Reply to: