
Я случайно ввел команду 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
.