O Bash não fornece o arquivo de origem, a menos que seja iniciado manualmente

0

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)

    
por cento 11.07.2014 / 14:07

1 resposta

0

$SHELL armazena seu shell padrão, não seu shell atual. Experimente echo $0 :

$ echo $SHELL
/bin/bash
$ echo $0
dash
    
por 11.07.2014 / 14:12