Noções básicas de script de shell no Linux - alteração de diretório em scripts de shell 🐧↓
Talvez você queira executar um script de shell que altere seu diretório de trabalho atual para outro diretório, por conveniência.
Por exemplo, se você visita frequentemente seu diretório de documentos (~/Documents) e deseja navegar até lá rapidamente, você pode escrever um script Bash para fazer isso.
Neste tópico, mostrarei como fazer isso com o comando cd. Ao longo do caminho, explicarei algumas das complexidades do comportamento do comando cd.
🐧 Um problema comum Vamos começar com um script que navega até o diretório ~/Documents. Vou me referir a ele cchdirectory.shxKsc:
🐧 Detalhando nosso código: • cd /home/linuxopsys/Documents - altera o diretório de trabalho atual para ~/Documents. • pwd - imprime o diretório de trabalho. • echo $$ - $$ é uma variável interna do Bash que contém o ID do processo (PID) do shell que está executando seu script.
🐧 Executando nosso script Como podemos ver, a execução do nosso script resulta na saída esperada de /home/linuxopsys/Documents, bem como no ID do processo do shell.
Verificando onde estamos agora que o script foi executado.
Você pode ver claramente que nosso diretório não mudou. Não esperávamos isso, pois o diretório atual não havia sido alterado para /home/linuxopsys/Documents. Então, qual poderia ser o problema? Vamos dar uma olhada no ID do processo do nosso shell:
Podemos ver claramente que o ID do processo do shell em que estamos (PID 4504) e o script do shell (PID 4574) são totalmente diferentes.
Este é um comportamento comum. O script é executado em seu próprio shell independente (subshell/shell filho). Ao final do script, esse shell separado é encerrado, deixando o shell pai, no qual estamos atualmente e que não é afetado.
A questão agora é: como resolver esse problema? Então, continue lendo.
🐧 Executando scripts no shell pai Podemos usar o comando source para permitir que nosso script execute comandos no shell atual (shell pai).
O comando source executa comandos dentro do contexto do shell atual, em vez de iniciar um novo shell para isso. O operador ponto é um atalho para o comando source (.). Ótimo! Como resultado, podemos executar o script bash no shell atual. Vamos tentar isto:
O trecho acima mostra claramente que o PID do script é o do shell pai que o executou, e o diretório atual do nosso shell pai agora é ~/Documents.
Ótimo! Até agora, mostramos que podemos executar scripts de shell no shell atual usando source. Alternativamente, poderíamos ter usado o operador . abreviado.
🐧 Utilizando Funções Bash É um saco escrever um script Bash para cada diretório. Em vez disso, poderíamos combinar vários comandos Bash em um único script:
Agora, se obtivermos o arquivo como fonte, podemos usar as funções do script em nosso terminal atual.
🐧 Usando Aliases Usando o comando alias integrado, podemos aprimorar ainda mais nossas funções Bash. Como exige menos digitação, um alias é mais conveniente de usar do que uma função. Vamos converter nossas funções em suas variantes de alias:
Em comparação com as funções bash anteriores, podemos ver como isso é conciso. Além disso, o alias pode ser usado da mesma maneira que as funções.
Pronto! Neste tópico, vimos várias maneiras de usar o comando cd em scripts Bash.
Para começar, descobrimos que executar um script de shell inicia seu próprio processo. Por fim, analisamos como as funções e o comando alias podem nos ajudar a melhorar nossos scripts Bash.
Obrigado por chegar até aqui e espero que você tenha achado este tópico útil. Comentários são muito apreciados.
Dê uma olhada em @linuxopsys se você gostou deste tópico! Vamos twittar mais sobre Linux, administração de sistemas e DevOps diariamente.