Como você está canalizando seu wget para um novo shell, o ambiente não é preservado.
Para provar isso, tente o seguinte de dentro da sua caixa vagabunda
root@lucid32:~# export PATH=$PATH:/foo
root@lucid32:~# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/vagrant_ruby/bin:/foo
Agora, execute o mesmo comando que um usuário diferente
root@lucid32:~# su -l vagrant -c 'echo $PATH'
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/opt/vagrant_ruby/bin
Compare a saída de ambos os comandos e você verá que o ambiente não é preservado no shell filho. (/ foo desapareceu)
Para tornar o ambiente persistente, use --preserve-environment
ou -p
ou -m
. Todos os 3 são equivalentes.
root@lucid32:~# export PATH=$PATH:/foo
root@lucid32:~# su --preserve-environment -l vagrant -c 'echo $PATH'
-su: /root/.bash_profile: Permission denied
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/vagrant_ruby/bin:/foo:/opt/vagrant_ruby/bin
Não se preocupe com o erro de permissão negada, que é esperado
Soluções
Solução 1.
Use -p
, -m
ou --preserve-environment
su --preserve-environment -l vagrant -c 'wget -qO- https://toolbelt.heroku.com/install-ubuntu.sh | sh'
Testado no lucid32 vagrant box (10.04)
Solução 2.
Se o seu manifesto de marionetes for executado antes de seu script heroku, basta adicionar / sbin ao caminho do usuário vagabundo através do fantoche
Testado lucid32 com os seguintes comandos
root@lucid32:~# su --preserve-environment -l vagrant -c 'wget -qO- https://toolbelt.heroku.com/install-ubuntu.sh | sh'
-su: /root/.bash_profile: Permission denied
This script requires superuser access to install apt packages.
You will be prompted for your password by sudo.
--2013-08-20 07:40:13-- https://toolbelt.heroku.com/apt/release.key
....
root@lucid32:~# su vagrant -
vagrant@lucid32:/root$ heroku login
Enter your Heroku credentials.
Email: