1. смотря от какого пользователя запускается скрипт, насколько я понимаю, системные обычно запускаются от рута, соответственно ~ в этом случае будет видимо /root (могу ошибаться, кто знает — поправьте)
2. ну, как показывает опыт, сегодня их нет, а завтра — бац, и уже есть
3,4 - так держать =)
В общем, угу. При написании скриптов желательно представлять, что же будет доступно из окружения при запуске этих скриптов.