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

Re: Emacs shell-command (M-!) e bashrc



Ciao

Il 23/10/17, Felipe Salvador<felipe.salvador@gmail.com> ha scritto:
> 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
>

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/


Reply to: