Як я можу отримати так, як Unix доріжки працюють у Bash для Windows?


2

Для незнайомих з msys2 це порт * nix програм для Windows. Там я міг би робити такі речі, як:

$ some-prog ~/.profile
$ some-prog /c/Windows/System32/drivers/etc/hosts

some-progможе бути будь-яким двійковим, незалежно від того, чи були вони загальними програмами Windows або програмами, зібраними з компіляторами в msys2. Шляхи будуть прозоро перекладені, тим самим надаючи цій самій * nix-ish vibe навіть при роботі з програмами, що не входять до msys2.

Наразі я перевіряю WSL / "Bash на Windows" (Creators Update), і, здається, у мене проблема.

Для програми Linux все працює добре:

~ $ nano ~/.

Як очікується, нано відкривається вмістом ~/.profile.

При спробі викликати програму Windows, є помилка:

~ $ "/mnt/c/Program Files/Sublime Text 3/subl.exe" ~/.profile
Unable to translate current working directory. Using C:\Users\Admin

І він відкривається C:\home\<wsl_username>\.profileв Sublime Text, тоді як власне файл повинен бути %localappdata%\lxss\home\<wsl_username>\.profile.

Шлях до Windows також не кращий:

~ $ "/mnt/c/Program Files/Sublime Text 3/subl.exe" /mnt/c/Windows/System32/drivers/etc/hosts
Unable to translate current working directory. Using C:\Users\Admin

Це відкривається C:\mnt\c\Windows\System32\drivers\etc\hosts, що знову ж таки неправильний шлях.

Чи є спосіб я мати правильну, msys2-подібну інтеграцію шляху на WSL?


1
@Seth Редагував моє запитання.
користувач2064000

Відповіді:


1

Вам потрібно щось уздовж cygpathвід Cygwin, на жаль, ще немає порту цього до WSL ... Тоді ви можете просто запустити:

cd /
notepad.exe $(cygpath /etc/hosts)

На даний момент найближчим замінником cygpathна даний момент є невелика програма, розміщена на redit під назвою win2lin.exe .

Для іншої посилання, ви можете побачити скрипт, Atom (текстовий редактор) тільки входить в їх останню версію, atom.sh .

Або якщо ви хочете використовувати nodejs і не проти жорсткого кодування свого імені користувача, ви можете написати:

var p = require("path")
var path = "C:\\Users\\me\\Desktop"
var sepa = path.split(p.win32.sep)
var newS = [].concat([sepa[0].toLowerCase()], sepa.slice(1))
var newP = "/mnt/" + p.posix.join.apply(p.posix, newS).replace(":", "")
// newP == "/mnt/c/Users/me/Desktop

Наразі найпростіше вирішити, щоб переконатися, що вікно, яке ви хочете використовувати, є на вашому шляху (ви навіть можете використовувати символьне посилання на .exe, щоб ваш шлях був чистим), а потім cd до / mnt / c / PathToFileYouWantToEdit, потім запустити програму , як: atom.exe myExampleFile.

cd /mnt/c/Some/Path
notepad.exe SomeFile

Якщо ваша мета - редагувати файли, які знаходяться всередині WSL, але не доступні зовні (все поза WSL / mnt), тоді найпростішим способом є встановлення сервера WebDAV всередині WSL, що дозволяє r / w доступу до /, і картографувати цей сервер WebDAV лист диска Windows.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.