Почему скрипты bash_completion постоянно присутствуют в среде?

Почему скрипты bash_completion постоянно присутствуют в среде?

Я случайно ввел команду exportв эмулятор консоли (запускающий Bash) вместо export -p, и теперь все скрипты bash_completion постоянно находятся в моей среде, даже переживая перезагрузку. Я хотел бы отменить это, но не смог разобраться в этом после нескольких часов. Я добрался до того, что нашел их в /etc/bash.bashrc, но не вижу, что их вызывает, и в любом случае все еще не могу понять, как или почему exportбез аргументов можно нанести такой ущерб.

Это в Knoppix, в не-root knoppixаккаунте. Когда я su -root аккаунт, такой проблемы нет.

[обновление: я не знаю, о чем говорю. Под «окружением» я подразумевал вывод setвстроенной функции Bash, в которой отображались функции. Мне следовало бы использовать env. В любом случае, произошло следующее: я использовал setв своих Makefiles для проверки генерации определенных значений и был удивлен, внезапно увидев все эти функции в выводе. Затем после перезагрузки я проверил из командной строки и все еще видел их, не подумав проверить из Makefile (из которого они больше не отображаются, не экспортируются. Итак, проблема решена; они, очевидно, setвсе время были в моем выводе, просто я не замечал их раньше, пока случайно не набрал exportи не увидел их в своем make setвыводе. Тем не менее, похоже, в документации bash есть несоответствие поведению; exportбез имен предполагается возвращать список экспортированных переменных, а не экспортировать все.)]

решение1

Вы можете перечислить все ваши переменные с помощью envи использовать unset $VARIABLEдля удаления всех ненужных переменных из вашей среды и таким образом исправить вашу проблему. Вы должны быть осторожны, чтобы удалить нужные переменные, потому что если вы удалите свой PATH, например, вы не сможете запустить никакие команды/приложения.

Хотя это и не объясняет, что пошло не так с вашими скриптами bash_completion, это отменило бы случайную ошибку export.

Связанный контент