$ PATH variável de ambiente não parece ser reconhecida

3

Eu fiz uma nova instalação do Debian Wheezy e instalei o zsh nele. Poucos dias depois, fiz uma instalação de baunilha do TeX Live 2014, então adicionei os caminhos binários necessários ao meu $ PATH. Agora eu comecei a escrever pequenos scripts, então eu gostaria de colocá-los em algum lugar facilmente acessível, isto é, ~/bin .

Meu caminho é assim:

~/bin:/opt/texbin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

Agora, se eu quisesse usar algo do TeX Live, é fácil:

% which pdflatex
/opt/texbin/pdflatex

Não tem problema. Mas quando eu tento executar algo de ~/bin , ...

% which hello_world
hello_world not found

Por isso, verifiquei novamente:

% ls -l ~/bin
total 18
-rwxr-xr-x 1 bozbalci bozbalci 5382 Sep  8 00:28 hello_world

E isso mostra que hello_world está indo bem em ~/bin com suas permissões de execução definidas. Eu tentei rehash , mas não funcionou. Ajuda?

    
por Berk Özbalcı 07.09.2014 / 23:42

1 resposta

7

Em um comando shell como

PATH=~/bin:/opt/texbin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

o til é expandido para o seu diretório pessoal quando o comando shell é executado. Assim, o valor resultante de PATH é algo como /home/theconjuring/bin:/opt/texbin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games .

Certifique-se de que o til não esteja entre aspas ( PATH="~/bin:…" ), caso contrário, ele significa. Para preceder um diretório ao valor atual de PATH , você pode usar

PATH=~/bin:$PATH

Em geral, em shells que não sejam zsh, $PATH fora de aspas duplas quebra quando o valor contém espaços ou outros caracteres especiais , mas em uma atribuição, é seguro. Com export , no entanto, você precisa escrever export PATH=~/bin:"$PATH" (embora você não precise de export com PATH , pois ele já está no ambiente). Em zsh, você não precisa de aspas duplas, exceto quando a variável pode estar vazia, mas se você definir PATH em .profile , ela será processada por /bin/sh ou /bin/bash .

Se você estiver definindo PATH em ~/.pam_environment , no entanto, não será possível usar ~ ou $HOME para representar seu diretório pessoal. Este arquivo não é analisado por um shell, é uma lista simples de NAME=value lines. Então você precisa escrever os caminhos completos.

    
por 08.09.2014 / 00:21