2016-11-24 5 views
1

я имел функцию в моем ~/.bash_profile файл, например так:"Unsource" а .bash_profile или .bashrc сценарий

function foo { 
    echo "foo" 
} 

после снабжаем файл .bash_profile,

source ~/.bash_profile 

I может работать Foo в командной строке:

$ foo 

сказать, что я хочу, чтобы изменить имя обув преградить

function bar { 
    echo "foo" 
} 

и я повторно источника, .bash_profile файл

source ~/.bash_profile 

Оказывается, что оба foo и bar доступны в командной строке. Почему это? и как я могу очистить старый .bash_profile код из памяти или где бы он ни хранился?

ответ

1

Вы должны быть сброшены обув

unset -f foo 

По поиску вашего Баша профиля вы в основном просто «добавление» больше информации вы не создаете свежую оболочку.

2

команда source просто объединяет результаты выполненного файла с текущей средой. Возврат к предыдущему состоянию невозможен.

После такого изменения большинство людей закрывают все существующие окна и открывают новые: проблема решена;

Но, вы можете удалить все функции перед поиском вашей команды (не только те, которые содержатся в соерседе файла, но все из них, который может быть немного излишний), как это:

unset `declare -F | cut -f3 -d" "` 

(declare -F перечисляет функции, просто получите их имена и передайте их unset).

 Смежные вопросы

  • Нет связанных вопросов^_^