Мне часто нужно изменить небольшую часть длинной переменной окружения (особенно, например, пути), и сделать это, вставив объект в редактор и изменив его там, или эквивалентный.

Есть ли небольшая удобная утилита для редактирования переменных среды с курсором в командной строке?

Я полагаю, я всегда мог бы поднять один, но я надеюсь, что уже есть кое-что, о чем я просто не знаю.

2 ответа2

1

Это то, что я использую (синтаксис ksh, но должен работать только с bash):

function viPath
{
  typeset _path=${1:-PATH}
  typeset _separator=${2:-:}
  eval echo "\$$_path" | tr $_separator '\n' >~/.path
  vi ~/.path
  eval _path=$(cat ~/.path | tr '\n' $_separator)
  eval ${1:-PATH}=$(eval echo $_path | sed 's/.$//')
  \rm ~/.path
}
0

Не могу придумать тот, который позволил бы вам интерактивно редактировать его непосредственно в командной строке, но есть способы сделать его более удобным, чем то, что вы описываете. Если это краткосрочное изменение и вам просто нужно что-то добавить к пути, вы можете самостоятельно ссылаться на текущее значение. Например, в Bash:

PATH=$PATH:/ADDITIONAL/PATH

Или, если вы хотите изменить приоритет, вы можете добавить

PATH=/ADDITIONAL/PATH:$PATH

Вы также можете сохранить себя, вставив значение во временный файл

echo $PATH > tempfile.txt

Если у вас есть более сложные или постоянные изменения, вы можете ссылаться и редактировать переменные окружения в вашем эквивалентном файле rc и / или профиля. Если их еще нет, вы можете использовать метод echo, чтобы перевести их в редактируемое состояние (просто добавьте >>, чтобы добавить вместо перезаписи). Или, в vi, вы также можете использовать

:r!echo $PATH

В Emacs это было бы

C-u M-! echo $PATH

Чтобы вставить вывод в файл, над которым вы работаете.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .