1

Возможный дубликат:
Путь в стиле Linux в Windows или наоборот

ПРИМЕЧАНИЕ: я должен был включить это заранее. Я очень хорошо понимаю, что это очень плохая идея, что в ней мало смысла и т.д. Но иногда возникают ситуации вне нашего контроля, которые заставляют нас искать решения, которые не имеют смысла.

У нас есть требование, чтобы файл свойств был помещен как в Windows, так и в Linux без изменений, и он содержит абсолютные пути. Я знаю, что базовый «/some/path» работает на обоих, но в Windows это путь, основанный на текущей букве диска.

Есть ли способ указать путь таким образом, чтобы он мог идти по буквам дисков в Windows?

Другими словами, если «/D:/some/path» работает в Windows (а это не так), этот путь может быть создан в Linux. Есть ли что-то подобное, что может сработать?

4 ответа4

1

Это действительно не будет работать. Если вам нужен абсолютный путь в Windows, для него потребуется буква диска. Linux не использует буквы, он просто использует монтирование на "/". Относительный путь из папки приложения - намного лучшая идея.

1

Почему бы не иметь отдельные файлы свойств для каждой целевой ОС? Я предполагаю, что вы должны упаковать свое приложение по-разному (MSI против RPM или аналогичного), так что в чем вред в отдельных файлах (которые могут быть сгенерированы из одного "базового" файла, чтобы избежать синхронизации друг с другом).

Намного лучше следовать соглашениям операционной системы, на которую вы ориентируетесь при настройке, ведении журнала и т.д. Linux имеет стандартную базу Linux (LSB) и стандарт иерархии файловой системы (FHS)

Для Windows, похоже, что-то похожее на MSDN: http://msdn.microsoft.com/en-us/library/cc834998%28v=vs.85%29.aspx

1

Если возможно, разрешите относительные пути в файле, например, к каталогу установки программы или аналогичному каталогу. В качестве альтернативы, если ваш собственный код читает этот файл, вы можете разрешить переменные окружения в путях, например, $INSTALL_DIR/lib/foo . Ваша программа может затем установить $INSTALL_DIR в соответствующий каталог перед чтением этого файла, или это может быть просто магический токен, который заменяется каталогом установки, а не реальной переменной среды.

0

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

  1. Сделать путь настраиваемым и сохранить в файле свойств
  2. Используйте cygwin и храните все локальное в каталоге cygwin
  3. Используйте переменные среды.
  4. Напишите свою собственную файловую систему.
  5. Отправьте заинтересованному лицу рыбу, завернутую в газету, и вежливо предложите пересмотреть это глупое требование.

Я имею в виду, это все, что я могу придумать.

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