[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: