Вы получаете выход из grep
на grep 'MY_VAR' $bash_profile 2>&1
. grep выводит согласованную строку в вашем профиле:
export MY_VAR=foo
по стандарту. В 2>&1
только вперед стандартный вывод на стандартный вывод. Хорошо использовать -q
опцию с grep. Также подоболочка (...)
вокруг grep не нужна. Попробуй это:
#!/bin/bash
set_bash_profile()
{
local bash_profile="$HOME/.profile"
if [ -w $bash_profile ]; then
if grep -q 'MY_VAR' $bash_profile; then
sed -i '/MY_VAR/d' $bash_profile
fi
echo "export MY_VAR=foo" >>$bash_profile
fi
}
set_bash_profile