Vagrantのプロビジョニング用のスクリプトを以下のように用意したら意図と違う動作をした。
(コマンド自体に深い意味はないです)
prov.sh
#!/bin/bash
cd /tmp
sudo -i -u vagrant pwd
結果は/tmp
じゃなくて/home/vagrant
になる。
以下のようにすると、移動先でコマンドを実行できる。
prov.sh
#!/bin/bash
sudo -i -u vagrant bash -c "cd /tmp; pwd"
sudo -i
しなければ前のスクリプトでも問題ないですが、ユーザーの環境変数を参照するようなコマンドを実行する場合にはこういうやり方が必要でした。