Execute o terminador no diretório necessário e, em seguida, execute o comando necessário

7

Eu quero abrir o Terminator em um diretório específico, por exemplo /home/downloads/ , e depois executar um comando.

Eu fiz a primeira parte deste "comando personalizado": cd /home/downloads; bash Terminator agora começa neste diretório, mas como eu posso fazer a segunda parte?

Agora que o terminador foi iniciado no diretório de downloads, quero executar qualquer comando desejado, por exemplo, ls ou rake ou usar alguns aliases como comandos. Como posso fazer isso?

Pressiono o botão direito do mouse no terminador e escolho Parâmetros, depois Layouts, depois adiciono texto na seção Comando personalizado.

Todos estes devem ser executados automaticamente após o início do terminador.

    
por Asq 30.09.2015 / 14:28

5 respostas

4

Execute cd /home/downloads; exec bash como o comando personalizado. (O exec builtin garante que bash seja filho do emulador de terminal; sem ele, pode acabar sendo um neto.) Você pode executar terminator -e 'cd /home/downloads; exec bash' na linha de comando.

Não é possível usar aliases no comando personalizado porque seus aliases são definidos por ~/.bashrc , mas esse arquivo é carregado apenas por shells interativos, não pelo shell de script que é usado como cola aqui entre o emulador de terminal e o shell de script. Se você quiser usar aliases, precisará carregá-los explicitamente. Se você mantê-los em um arquivo separado, isso seria algo como

. ~/.bash_aliases; cd /home/downloads; exec bash

ou na linha de comando

terminator -x bash -c '. ~/.bash_aliases; cd /home/downloads; exec bash'

Se os aliases estiverem em ~/.bashrc , use . ~/.bashrc , mas cuidado com o fato de que pode haver coisas no seu .bashrc que causam erros porque o shell não é interativo. Se isso acontecer, a solução mais fácil é dividir seus aliases (e funções e qualquer outra configuração que você queira usar no código de cola) em um arquivo separado e usar . para incluir os de .bashrc .

    
por 01.10.2015 / 02:49
3

Eu tive o mesmo problema para ativar ambientes virtuais com o Terminator .

O truque é fazer tudo com apenas um comando: bash . Aproveitando sua opção -i (interativa) e usando um --rcfile personalizado no qual PROMPT_COMMAND é definido como o que quisermos executar. O resultado seria assim:

command = "bash --rcfile <(cat ${HOME}/.bashrc; echo 'export PROMPT_COMMAND="your commands; go here; unset PROMPT_COMMAND"') -i"

Simplesmente substitua your commands; go here; pelos seus comandos reais. Veja esta resposta para uma explicação .

    
por 29.03.2017 / 12:17
2

Basta adicionar o outro comando da mesma maneira que você adicionou o primeiro. Por exemplo, para executar ls :

cd /home/downloads; ls; bash

Você pode adicionar isso à opção "comando" do seu perfil:

Omotivopeloqualvocênãoobtémrakeéqueelenãoestánocaminhopadrão.Parausá-lo,vocêprecisaespecificarocaminho.Então,primeiroexecuteestecomandonoseuterminal:

typerake

Issoretornaráalgocomo/foo/bin/rake.Esseéocaminhoquevocêprecisa.Pegue-oeadicione-oaocomandoPersonalizadoacima:

cd/home/downloads;/foo/bin/rake;bash

Issonãofuncionaráparaaliases.Osaliasessãoconfiguradospeloseushellenãoestarãodisponíveisaqui.Umasoluçãoalternativaéusarscriptsemvezdisso.Então,sevocêtemumaliascomoeste:

aliasfoo="command1 argument2"

Crie um script, chame-o foo.sh e salve-o em /home/youruser/bin , com este conteúdo:

#!/usr/bin/env bash
command1 argument2

E torne-o executável:

chmod a+x /home/username/bin/foo.sh

Em seguida, na seção "Comando personalizado", use:

cd /home/downloads; /home/username/bin/foo.sh; bash
    
por 30.09.2015 / 15:12
1

Se você clicar com o botão direito do mouse em uma janela do Terminator aberta, poderá escolher "Preferências". Escolheu o "Perfil" e a partir daí, o separador "Comando". Há uma caixa de seleção intitulada "Executar um comando personalizado em vez do meu shell".

Eu acredito que é isso que você está procurando.

    
por 30.09.2015 / 15:02
1

Apenas não use ' command = ' para alterar o diretório. Use-o para o seu comando real!

Ao editar .config/terminator/config , basta especificar

  • ' directory = <dir> ' quando você deseja que o terminal grave automaticamente em um determinado diretório ou
  • ' command = <cmd>; <your_shell> ' quando você deseja executar um comando personalizado e não simplesmente alterar o diretório

Por exemplo:

  • Se você quiser que o terminal grave cd em <dir> na inicialização, então especifique 'directory' e deixe 'command' vazio:

    [[terminal7]]] directory = /home/dan/src/wmc order = 1 parent = child3 profile = default type = Terminal uuid = ebbe5595-06be-43ff-b7ce-4534aa6bb7f8

  • Se você deseja apenas executar um camom acustom, apenas especifique o comando:

    [[terminal7]]] command = /home/dan/mine/my-custom-command order = 1 parent = child3 profile = default type = Terminal uuid = ebbe5595-06be-43ff-b7ce-4534aa6bb7f8

  • Se você quer que ambos copiem para o diretório DIR e executem um comando:

    [[terminal7]]] directory = /home/dan/dl-dir command = /home/dan/mine/my-custom-command-to-run-in-dlDIR order = 1 parent = child3 profile = default type = Terminal uuid = ebbe5595-06be-43ff-b7ce-4534aa6bb7f8

por 31.12.2016 / 20:21