O shell criado por 'bash -i -c command' é interativo?

2

De link

When bash is run with -c, it is considered a non-interactive shell, and it does not read ~/.bashrc, unless is -i specified. So,

$ type cp
cp is aliased to ‘cp -i’          # Defined in  ~/.bashrc

$ cp .file1 file2
cp: overwrite ‘file2’? n

$ bash -c "cp .file1 file2"
                                  # Existing file is overwritten without confirmation!
$ bash -c -i "cp .file1 file2"
cp: overwrite ‘file2’? n

O shell é criado por bash -i -c <command> interativo ou não interativo?

Esse shell não aceita um comando de stdin, não é? Então não é interativo, é?

Esse shell lê ~/.bashrc , então não pode ser não interativo, pode?

    
por Tim 18.04.2016 / 17:58

1 resposta

3

Use $ -

Do Manual de Referência do Bash :

To determine within a startup script whether or not Bash is running interactively, test the value of the ‘-’ special parameter. It contains i when the shell is interactive.

Para este exemplo,

$ bash -c 'echo $-'      # This is a non-interactive shell
hBc

$ bash -i -c 'echo $-'   # This is an interactive shell
himBHc
    
por 18.04.2016 / 18:33

Tags