Como executar o gnome-terminal -e “source activate” sem permissão negada erro?

0

Como posso executar "source activate" de um script bash como o argumento -e para o gnome-terminal?

gnome-terminal -e ". /path/to/virtualenv/bin/activate"

Quando executo este comando, espero um novo terminal que tenha o comando source activate já executado. Mas, em vez disso, recebo um erro na janela atual e na recém-criada: Erro: falha ao executar o processo filho "." (Permissão negada)

Eu sinto que estou fazendo uma simples supervisão, ou entendendo mal o argumento -e talvez.

A execução do comando em um script bash ou em uma janela do terminal fornece o mesmo resultado. sudo dá o mesmo resultado, então estou pensando que o problema da permissão indica que não estou fazendo o que acho que estou fazendo com o comando acima.

    
por Rick Page 18.08.2016 / 21:41

1 resposta

2

Isso porque o . ( source ) é um comando específico do shell, ou seja, específico do shell, não externo. Você precisa executá-lo dentro do shell; Sem o shell, gnome-terminal está tentando executar um comando literal . com /path/to/virtualenv/bin/activate como seu argumento, levando ao erro de permissão do denier.

Você precisa gerar um shell interativo para fazer o sourcing e gerar outro shell interativo depois:

gnome-terminal -e 'bash -ic ". /path/to/virtualenv/bin/activate && bash"'

Ao tentar iniciar um ambiente virtual, convém definir a opção --rcfile , abordagem mais limpa, mas a ressalva óbvia é que os arquivos de inicialização de sessão comuns /etc/bash.bashrc e ~/.bashrc não são lidos:

gnome-terminal -e 'bash --rcfile /path/to/virtualenv/bin/activate'
    
por heemayl 18.08.2016 / 21:57