executando um .sh e terminando em um diretório diferente

6

Eu sei que existe um comando simples para isso, mas estou tentando executar um arquivo .sh, que contém linhas como:

mkdir $filename
cd $filename

o arquivo é executado, mas termina no arquivo em que comecei. Eu sei que há uma palavra-chave simples para colocar na frente para fazer a execução me deixar no diretório $ filename, mas não consigo encontrá-lo na internet. Eu encontrei uma vez antes, mas não consigo fazer isso de novo.

    
por user126946 29.01.2013 / 07:21

2 respostas

4

De acordo com isto:

link

você pode executar seu script usando

. ./scriptname

e ele irá executar o shell script com seu shell, não invocando um subshell como o que geralmente acontece.

    
por Max Sherman 29.01.2013 / 07:47
1

Quando você executa um script de shell, é equivalente a executá-lo em um shell diferente. Fazer ./script.sh é igual a sh script.sh , o que pode abrir o problema melhor para você.

Para executar o script no contexto de shell atual, você precisa usar source ou seu alias . , ou seja, source script.sh ou . script.sh .

A solução mais fácil para operações simples como essa seria criar um alias em vez de um script, por exemplo. alias mkcd='mkdir dir; cd dir' ou se você precisa executar diretórios arbitrários, você pode executar a função mkcd() { mkdir ; cd } . Você pode colocar qualquer um deles em ~/.bashrc ou ~/.bash_aliases .

    
por Tuminoid 29.01.2013 / 08:00