1 |
Thiago Nunes <thiagonunesrs@×××××.com> |
2 |
writes: |
3 |
|
4 |
> Em 24 de outubro de 2010 10:05, Nuno J. Silva <nunojsilva@×××××××.pt> escreveu: |
5 |
> |
6 |
>> Ele não encontra porque o $PATH está vazio. Isso não me passou pela |
7 |
>> cabeça, quando respondi na outra thread, mas o que o "-i" faz é ignorar |
8 |
>> as variáveis que já estão definidas, pelo que quando "chroot" é avaliado |
9 |
>> o ambiente só tem HOME e TERM, e *não* tem PATH. |
10 |
> |
11 |
> Hm... |
12 |
> |
13 |
>> A não ser que me escape alguma ordem de avaliação da BASH, isto deve |
14 |
>> funcionar |
15 |
>> |
16 |
>> env -i HOME=$HOME TERM=$TERM `which chroot` /mnt/gentoo /bin/bash |
17 |
> |
18 |
> Então na verdade isso é automatizar o que eu tinha dito anteriormente |
19 |
> de colocar o caminho completo do chroot. Porém se o env não tem $PATH |
20 |
> ele provavelmente não vai encontrar nem o "which". Por exemplo: |
21 |
> |
22 |
> D520 ~ # which chroot |
23 |
> /usr/bin/chroot |
24 |
> D520 ~ # unset PATH |
25 |
> D520 ~ # which chroot |
26 |
> bash: which: Arquivo ou diretório não encontrado |
27 |
|
28 |
A minha dúvida da ordem de avaliação é se funciona sempre como |
29 |
aqui. Aqui o que está entre os acentos agudos é avaliado *antes* de |
30 |
executar o comando, no ambiente actual, onde ainda existe PATH. |
31 |
|
32 |
$ env -i which chroot |
33 |
which: no chroot in ((null)) |
34 |
|
35 |
$ env -i echo `which chroot` |
36 |
/usr/bin/chroot |
37 |
|
38 |
|
39 |
>> Erro da documentação, não? |
40 |
> |
41 |
> Não exatamente porque o que a documentação indica funciona, mas em |
42 |
> alguns casos o env rateia, então um comando mais completo vai |
43 |
> funcionar nos casos onde o que a documentação sugere hoje não |
44 |
> funciona. |
45 |
|
46 |
Mas se o env -i limpa o path, isto só deve funcionar quando estamos na |
47 |
pasta onde se encontra o chroot. |
48 |
|
49 |
-- |
50 |
Nuno J. Silva |
51 |
gopher://sdf-eu.org/1/users/njsg |