De acordo com isto:
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.
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.
De acordo com isto:
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.
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
.
Tags command-line directory