Ciao Il 23/10/17, Felipe Salvador<[email protected]> ha scritto: > On Tue, Oct 17, 2017 at 09:21:29AM +0200, Teodoro Santoni wrote: >> Ciao, >> >> Il 09/10/17, Felipe Salvador<[email protected]> 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 >
Potresti "wrappare" bash in uno script tipo #!/bin/bash source $HOME/.bashrc $@ e lanciare lo script, oppure usare empty [1]. anche lanciare bash -c 'source $HOME/.bashrc; comandi' funzionerà sicuramente... [1]: http://empty.sourceforge.net/

