1

Я пытаюсь запустить PETSc под Cygwin на моей машине с Windows для тестирования параллельного кода. К сожалению, есть проблема, когда Cygwin импортирует элементы из моего пути Windows в форме:

C:\Program Files (x86)\...

И проблема в том, что компиляторы PETSc и MPI падают на лицо, потому что они не вызывают cygpath для исправления символов "". Итак, мне нужна помощь с одной из трех вещей:

  1. Как заставить Cygwin не загружать путь Windows

    • Я помещаю его в отдельный раздел и пытаюсь использовать только нативные компиляторы Cygwin, чтобы он, надеюсь, мог жить без особого знания о Windows.
  2. Перепишите мою переменную PATH, чтобы экранировать все символы "", заменив их на "\"

Я знаю это:

       echo $PATH | sed 's/ /\\ /g'

Делает именно то, что мне нужно, но я не могу заставить его выполнить команду «export PATH =» в .bashrc. Я пробовал:

export PATH='echo $PATH | sed '"'"'s/ /\\ /g'"'"' '

Который просто разрывает мою сессию Cygwin до такой степени, что мне нужно восстановить .bashrc в Notepad++, чтобы снова загрузиться

export PATH="echo $PATH | sed 's/ /\\ /g'"

Который просто добавляет "echo" и добавляет "| sed 's/\ /g" к PATH.

export PATH='echo $PATH | sed "s/ /\\ /g"'

Что заменяет весь мой путь просто "echo $ PATH | sed"/\ /g "

  1. Что-то, о чем я даже не думал.

Любая помощь будет принята с благодарностью.

1 ответ1

0

Как заставить Cygwin не загружать путь Windows

Для оболочки bash это можно сделать, внеся небольшие изменения в ~/.bash_profile .

Мне нравится иметь полный контроль над PATH в Cygwin Bash, поэтому я добавил следующий код в мой ~/.bash_profile

# Build up the path using the directories in ~/.path_elements
unset PATH
while read line; do 
  PATH="${PATH}$line"; 
done < ~/.path_elements

# Add current directory to path
export PATH=".:${PATH}"

Заметки:

  • unset PATH удаляет любой PATH уже настроенный кодом запуска Cygwin.

  • Цикл в while читает в элементах пути из файла в моем домашнем каталоге ~/.path_elements , чтобы построить мой предпочтительный PATH

  • Наконец мы добавляем текущий каталог . в PATH и экспортировать его.

  • Добавление текущего каталога в PATH может рассматриваться как угроза безопасности, поскольку встроенные команды можно заменить командами, расположенными в текущем каталоге. Пожалуйста, имейте это в виду, если вы решите использовать мой код.

Содержимое моих ~/.path_elements выглядит следующим образом. Модифицируйте и приправьте по своему вкусу, чтобы добавить дополнительные элементы к дорожке.

/home/DavidPostill/bin:
/usr/local/bin:
/usr/bin:
/c/Windows/system32:
/c/Windows

Результат:

DavidPostill@Hal /f/test
$ echo $PATH
.:/home/DavidPostill/bin:/usr/local/bin:/usr/bin:/c/Windows/system32:/c/Windows

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