Как пс4080
в ответе упоминается, правильный способ сделать это wsl -e -- <команда>
(или, как правило, wsl -e <команда>
).
Однако на самом деле есть довольно много нюансов, с которыми вы можете столкнуться при использовании этой техники, и приятно понимать, что происходит с каждым точным заклинанием, чтобы вы могли использовать правильный, когда это необходимо:
wsl <команда>
- Запускает оболочку по умолчанию для текущего пользователя
- ... как неинтерактивная оболочка без входа в систему
- ... в каталоге, переданном владельцем процесса Windows
- работает
<command>
в этой оболочке
В зависимости от вашей оболочки вы можете увидеть это с помощью wsl пс -eH
:
PID TTY ВРЕМЯ CMD
1 ? 00:00:00 начало
18 ? 00:00:00 начало
19 ? 00:00:00 начало
20 б/0 00:00:00 рыба
28 баллов/0 00:00:00 пс
Обратите внимание, что это трудно увидеть, когда бить
ваша оболочка по умолчанию, так как -с
приводит к неявному исполнитель
.
Тот факт, что это выполняется в каталоге процесса Windows, может быть удобным, поскольку вы можете сделать:
всл лс -лх
... в PowerShell, чтобы получить «удобочитаемые» размеры файлов, что-то, что удивительно трудно сделать в противном случае.
Самая сложная часть этого — вторая квалификация. WSL запускает вашу оболочку как неинтерактивную оболочку без входа в систему при запуске таким образом. Это означает, что ~/.bashrc
и ~/.bash_profile
находятся нет источник при запуске. Это может вызвать путаницу при попытке запустить команду, которая требует выполнения каких-либо действий в файлах запуска (например, установки переменной среды).
wsl -e <команда>
- работает
<command>
как оболочка
- ... в каталоге, переданном процессом-владельцем
-е
полностью обходит вашу оболочку по умолчанию.
> wsl пс -eH
PID TTY ВРЕМЯ CMD
1 ? 00:00:00 начало
7 ? 00:00:00 начало
8 ? 00:00:00 начало
9 баллов/0 00:00:00 пс
Это может быть немного более эффективен, поскольку вы избегаете накладных расходов оболочки при запуске, но обычно об этом не стоит беспокоиться.
wsl -e bash -lic <команда>
- работает
бить
как ваша оболочка (независимо от того, является ли она оболочкой по умолчанию или нет)
- Заставляет его быть логином, интерактивной оболочкой (
-ли
) так что ~/.bashrc
и ~/.bash_profile
(и/или другие) получены
- ... в каталоге, переданном владельцем процесса Windows
- работает
<command>
в этой оболочке
Эту версию следует использовать, если команде нужно что-то из вашей начальной конфигурации.