Самое простое решение — сделать копию оригинала $IFS
, как, например. ответ мсв. Однако это решение не делает различий между неустановленным набором IFS
и набором IFS
, равным пустой строке, что важно для многих приложений. Вот более общее решение, которое отражает это различие:
# Functions taking care of IFS
set_IFS(){
if [ -z "${IFS+x}" ]; then
IFS_ori="__unset__"
else
IFS_ori="$IFS"
fi
IFS="$1"
}
reset_IFS(){
if [ "${IFS_ori}" == "__unset__" ]; then
unset IFS
else
IFS="${IFS_ori}"
fi
}
# Example of use
set_IFS "something_new"
some_program_or_builtin
reset_IFS
Выяснилось, что проблема заключалась в Covenant Eyes, программе, запущенной на моем компьютере и имеющей некоторые функции, -похожие на VPN. Я до сих пор не уверен, в чем проблема, но удаление все исправило. Переустановка не воссоздала проблему.