Apenas tentando aprender um pouco o script bash. Minha versão antiga do bash:
Bash version 3.2.53(1)-release...
Atualizei meu bash no mac os x yosemite com homebrew:
brew update
brew install bash
Em seguida, nas propriedades do terminal, mudei o caminho padrão do shell de /bin/bash
para /usr/local/bin/bash
(como eu entendo, é aqui que o homebrew instala o bash atualizado).
Então eu verifiquei o resultado novamente (e parece que está tudo bem):
$ echo $BASH_VERSION
Bash version 4.0.33(0)-release...
Mas quando eu estava tentando escrever um script bash simples:
#!/bin/bash
echo "Bash version ${BASH_VERSION}..."
for i in {0..10..2}
do
echo "Welcome $i times"
done
O RESULTADO É:
Bash version 3.2.53(1)-release...
Welcome {0..10..2} times
AO INVÉS DE:
Bash version 4.0.33(0)-release...
Welcome 0 times
Welcome 2 times
Welcome 4 times
Welcome 6 times
Welcome 8 times
Welcome 10 times
Por que a versão do Bash volta para a antiga quando estou tentando executar o script no mesmo shell ??? Isso só me assusta! Por favor, alguém me explique qual é o meu problema)))
fonte
sh
está em/bin
.brew
talvez não tenha criado um link simbólico para obash
chamadosh
. Com seu$PATH
conjunto corretamente, tente iniciá-lo como este:bash script.sh
.#!/usr/bin/env bash
Instale o novo bash:
Faça deste o shell padrão:
Defina o ambiente em um script:
O uso
env
procurará o Bash no seu$PATH
e usará o primeiro que ele encontrar. Você pode ver qualbash
será usado digitandowhich bash
. Se estiver vendo/bin/bash
primeiro, será necessário definir seu$PATH
in~/.bashrc
e/.bash_profile
.fonte
chsh
vir "shell não padrão" impresso durante o uso , precisará atualizar o / etc / shells .Como pjv apontou, você realmente deve usar
em seus scripts em todos os lugares para ser portátil. Por exemplo, se você tentar executar seu script com
falhará na maioria dos sistemas linux.
fonte