Sobrebash
Para um novo tty quando é executado o echo $SHLVL
comando ele exibe 1 conforme o esperado. Agora, se no mesmo tty for executado o bash
comando e posteriormente novamente o echo $SHLVL
comando ele exibe 2. É obrigatório usar o exit
comando para sair é claro. Além disso, percebi que cada bash tem seu próprio comando de histórico e o usuário está interagindo ou tem acesso no bash atual.
Até agora, depois de fazer uma pesquisa, parece que é uma espécie de subshell (corrija-me se estiver errado), porque principalmente um subshell é criado por meio da (<command>)
abordagem.
Assim como estava jogando executei o bash cat /etc/os-release
comando e nada foi impresso.
Portanto, sendo curioso
Pergunta
- Como
bash <command-argument>
funciona?
Como pergunta extra :
- Em que circunstâncias a
bash <command-argument>
abordagem seria obrigatória?
Observação
Na resposta foi indicado esperar uma mensagem de erro. Bem, o erro mencionado está correto (testado no Ubuntu e Fedora) mas no meu caso o bash cat /etc/os-release
comando foi aplicado como argumento para criar um contêiner docker baseado em Linux e nenhum erro foi mostrado conforme indicado desde o início e foi o motivo para criar esta postagem. Bem, é outra história
bash <command-argument>
está descrito na seção do manual sobre como invocar o Bash :Então
procura um arquivo chamado
cat
contendo comandos shell (em outras palavras, um script shell). Normalmente, você deve ter visto um erro semelhante aa menos que você tenha um arquivo nomeado
cat
no diretório atual; nesse caso, o Bash tentaria executá-lo.Não consigo pensar em um contexto em que o uso
bash <command-argument>
seja obrigatório , mas pode ser útil em diversas circunstâncias, por exemplo:bash -x script
).Este é o mecanismo usado ao executar scripts através de um shebang: um script que começa com
#! /bin/bash
termina executado como/bin/bash <path-to-the-script>
. Portanto, executar um script que requerbash
diretamente ou usarbash <path-to-the-script>
é equivalente. (Mas veja Por que o "-" no shebang "#! /bin/sh -"? para obter informações úteis sobre shebang.)