Por que a maioria das variáveis Bash (BASH_VERSINFO, OLDPWD, HOSTTYPE) retorna “Comando não encontrado”

0

Encontrei a lista de muitas variáveis BASH, link

A descrição diz:

These variables are set or used by Bash, but other shells do not normally treat them specially.

E a primeira variável é

BASH: The full pathname used to execute the current instance of Bash.

mas quando eu digito BASH no meu terminal eu recebo bash: BASH: command not found

Posso confirmar a partir de echo $0 que estou usando bash .

Da mesma forma, quando eu executo BASH_VERSINFO , recebo a mesma saída, mesmo que a descrição do comando diga,

A readonly array variable (see Arrays) whose members hold version information for this instance of Bash. The values assigned to the array members are as follows:

BASH_VERSINFO[0] The major version number (the release).

BASH_VERSINFO[1] The minor version number (the version).

BASH_VERSINFO[2] The patch level.

BASH_VERSINFO[3] The build version.

BASH_VERSINFO[4] The release status (e.g., beta1).

BASH_VERSINFO[5] The value of MACHTYPE.

Algumas das variáveis como hostname , pwd funcionam embora

    
por MaverickD 06.09.2018 / 03:15

2 respostas

4

Você está digitando a variável diretamente e o shell interpreta o que você digitou como um comando e pesquisa as entradas na variável $ PATH para um comando com o mesmo nome. Como você não tem entradas em seu $ PATH com o nome BASH e BASH_VERSINFO, você recebeu a mensagem de erro "comando não encontrado". pwd e hostname são, por outro lado, comandos válidos, como você descobriu.

Em vez disso, você deve emitir um comando para imprimir variáveis (geralmente echo ou printf , ambos internos do shell) e fornecer a variável que deseja inspecionar como um argumento do comando. Observe que os nomes dos comandos geralmente são compostos inteiramente de letras minúsculas, enquanto as variáveis de ambiente do shell geralmente são compostas inteiramente de letras maiúsculas.

Para exibir os valores das variáveis que você mencionou, tente algo como o seguinte:

$ echo "$BASH"
/bin/bash
$ for i in {0..4}; do printf "%d\t%s\n" "$i" "${BASH_VERSINFO[$i]}"; done
0   4
1   4
2   12
3   1
4   release

Para imprimir variáveis de matriz, use a sintaxe "$ {ARR_NAME [$ index]}". Os índices de bash são baseados em 0. Em geral, você deve encapsular variáveis (incluindo matrizes) entre aspas duplas para evitar comportamento indesejado (a omissão de aspas é equivalente ao operador split-glob, conforme explicado em aqui ).

    
por 06.09.2018 / 03:23
1
pwd

é um comando, como é

echo $BASH

onde

BASH

não é

    
por 06.09.2018 / 03:21

Tags