Вы можете настроить функцию для редактирования $ PATH
в формате с разделением строк в вашем vi
, как если бы это был файл:
pathEdit(){
export PATH="`printf '%s' "$PATH" |tr : '\n'|
vipe | tr '\n' : |sed 's/:$//'`";
}
Если у вас нет ] vipe
из moreutils
, вы можете эмулировать его с помощью:
#!/bin/sh
set -e
st=0; tmpf=
tmpf="`mktemp`" && exec 3<>"$tmpf" || st="$?"
rm -f "$tmpf"
[ "$st" = 0 ] || exit "$st"
cat >&3
</dev/tty vi "$@" /dev/fd/3 >/dev/tty
cat /dev/fd/3
Ваш ~/.bashrc
файл определяет, является ли он источником интерактивной или не -интерактивной оболочки:
case $- in
*i*) ;;
*) return ;;
esac
Когда этот файл получен из сценария (, который не является -интерактивной оболочкой ), берется ветвь return
и файл не выполняется до конца.
Добавление операторов export
в конец файла будет означать, что они не будут выполняться при получении из сценария.
Решение может состоять в том, чтобы записать операторы export
в отдельный файл и получить его из вашего сценария (и, возможно, также из ~/.bashrc
, если вы считаете, что это необходимо ).