$SHELL
armazena seu shell padrão, não seu shell atual. Experimente echo $0
:
$ echo $SHELL
/bin/bash
$ echo $0
dash
O bash não irá fornecer arquivos a partir de um terminal de login, a menos que eu execute manualmente o bash a partir de um terminal, tenho bash (e não sh ou dash). Quando eu obtenho um arquivo, ele retorna erros (como "erro de sintaxe quase inesperado"), a menos que eu não execute $ bash antes da fonte
$echo $TERM
screen-256color
$echo $SHELL
/bin/bash
$shopt login_shell
login_shell on
Erro:
$source ./shrc
-bash: ./shrc: line 105: syntax error near unexpected token '('
$bash
$source ./shrc <-- now it works
Alguma idéia?
UPDATE 1
Quando executo o bash, eu entro no shell non_login e ele funciona. Por que o shell de login não é capaz de fornecer o arquivo?
UPDATE 2
$echo $0
-bash
$bash
$echo $0
bash
UPDATE 3
else
echo;
echo "The SPEC environment variable is not set! Please source the shrc and try again."
echo;
fi
}
ogo() { <----- LINE 105
SHRC_NO_GO=0
TOP=$SPEC
if [ "x$TOP" != "x" ]; then
if [ "x$1" = "x--help" -o "x$1" = "x-h" ]; then
É um arquivo de benchmarks SPEC2006 (é um programa bem conhecido, não é o meu código) Minha suposição é que está correto. (de fato, em shell não-login, funciona)
$SHELL
armazena seu shell padrão, não seu shell atual. Experimente echo $0
:
$ echo $SHELL
/bin/bash
$ echo $0
dash