Там храниться только история команд, которые были введены в bash.
Если у вас будет другая shell - список команд в .bash_history вы не увидите.
Например у меня может запускаться bash сразу после входа в систему, но я потом запущу, например, zsh.
bash.history будет пустым.
Это я к тому, что даже если вы сделаете свою shell, то её можно будет легко обойти.
Знаю как минимум одно реальное решение, которое будет работать.
Делаете модуль к ядру Linux, там перехватываете системный вызов exec и всё, что с этим связано и тогда обойти вас будет уже очень не просто.
Я делал нечто подобное для Unix FreeBSD лет 20 назад :))