O que // e :: nos valores das variáveis de ambiente significam?

3

Na minha máquina Linux, algumas das variáveis de ambiente contêm listas de diretórios. Os diretórios são separados por : . Mas às vezes eles são separados por :: . É apenas um erro que deve ser tratado como : ou isso significa que e uma string vazia é um dos diretórios (que provavelmente deve ser interpretado como o diretório atual).

A maioria dos diretórios especificados nas variáveis de ambiente tem este formato:

/aaa/bbb/ccc

No entanto, alguns deles têm este formato:

/aaa/bbb//ccc

Nota: barra dupla entre bbb e ccc . É apenas um erro que é interpretado como uma única barra ou tem um significado especial?

    
por Roman 15.07.2013 / 17:03

2 respostas

3

O duplo-cólon ( :: ) realmente significa o diretório atual. O manual de Bash descreve PATH como:

A colon-separated list of directories in which the shell looks for commands. A zero-length (null) directory name in the value of PATH indicates the current directory. A null directory name may appear as two adjacent colons, or as an initial or trailing colon.

Mas, pessoalmente, acho melhor especificar explicitamente o diretório atual (por exemplo, /foo/bar:. ) para maior clareza.

Quanto às barras, qualquer número de barras adjacentes é tratado como uma única barra.

    
por 15.07.2013 / 19:31
1

vários separadores '/' são ignorados:

$ cd .////somedir

é equivalente a

$ cd somedir

Quanto aos separadores extras em seu PATH, uma pequena experimentação sugere que eles também são ignorados.

Pelo menos, isso:

/home/jon.kiparsky:2040 $ echo $PATH
/home/jon.kiparsky/bin::::::/home/jon.kiparsky/bin::/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

não quebrou meu caminho! :)

    
por 15.07.2013 / 19:03