Script de shell para alterar o diretório do terminal e abrir um segundo terminal

3

Eu sou novo em escrever scripts shell e estou tentando escrever um script em CD para uma pasta onde meus programas são salvos para uma das minhas classes, então tenho um segundo terminal aberto que o ssh's para um servidor usado para testar os programas que eu escrevo O problema é que não consigo encontrar uma maneira de alterar o diretório do terminal shell para onde meus programas estão armazenados.

#!/bin/bash/
gnome-terminal -e "ssh [email protected]";
cd /path/to/dir

o problema é que o diretório de trabalho não muda depois que o script termina (ele permanece como era quando o script foi chamado). Eu tentei chamá-lo, exceto com um '. na frente do nome do script para fazê-lo funcionar no processo atual, mas o segundo terminal nunca foi aberto.

Eu tentei fazer a mesma coisa acima, exceto que substituí a terceira linha por

gnome-terminal -e "cd /path/to/dir/";

de modo que dois terminais seriam abertos, mas o terminal para CD para o caminho deu um erro ao longo das linhas de "houve um erro ao criar o processo filho para este terminal: falha ao executar o processo filho 'cd'"

alguém pode me ajudar a descobrir como resolver esse problema?

    
por bs7280 25.02.2015 / 07:44

2 respostas

3

Sua primeira versão primeiro abre um gnome-terminal , espera até você fechá-lo e depois muda para o novo diretório.

Sua segunda versão tenta executar um comando cd em vez de um shell, no entanto cd não é um comando real, mas um shell embutido. (Veja type -a cd para isso.)

A questão é como gnome-terminal decide qual diretório exibir. Normalmente, ele usará o diretório de trabalho atual, a menos que seja substituído pela opção --working-directory .

Portanto, você pode usar:

cd /path/to/dir && gnome-terminal

ou

gnome-terminal --working-directory=/path/to/dir

Dê uma olhada em man gnome-terminal para as opções disponíveis.

Para a parte ssh, você precisa decidir se deseja executar o gnome-terminal no lado local ou remoto. Para executá-lo no site remoto, use:

ssh -X [email protected] gnome-terminal --working-directory=/path/to/dir

para o lado local, você pode usar algo como:

gnome-terminal -e "ssh -t [email protected] bash -c 'cd /path/to/dir && bash -l'";
    
por 25.02.2015 / 07:55
0

O diretório de trabalho permaneceria alterado se você executasse o script com um ponto (espaço) antes do nome do script.

Por exemplo, eu uso um pj nomeado que me move para o meu diretório python para projetos. Ele contém estas duas linhas:

#!/bin/bash
cd /home/pi/python

Eu tornei executável e copiei para / usr / sbin onde está no meu $ PATH.

Para executá-lo, eu digito:

. pj         (note the dot and the space)

E voila, muda para esse diretório e me deixa lá.
Não poderia ser mais fácil.

    
por 24.07.2017 / 17:12