A maioria dos sistemas proporcionam um open
comando (alternadamente conhecido como start
, cygstart
, xdg-open
etc.) que abre um arquivo no aplicativo do ambiente de trabalho "default", o que quer que seja.
Por exemplo, no Powershell quando eu digito:
PS> start form.pdf
O documento é aberto no Edge.
O Bash-on-Ubuntu-on-Windows pode fazer isso?
windows-10
windows-subsystem-for-linux
Cheezmeister
fonte
fonte
... | sed 's/\/mnt\/\(.\)/\1:/1' | xargs cmd.exe /C start
cmd.exe /c start "%localappdata%/lxss/$(readlink -f $some_relative_path)"
Agora estamos cozinhando com fogo!Isso depende se você deseja A) iniciar um programa Linux dentro da WSL ou B) se deseja iniciar um programa Windows a partir de um prompt do shell bash.
Se B) então sim se você instalar o cygwin / bash. Por exemplo, instale o git para windows e você tem um sistema em execução no windows com bash. Então você pode simplesmente executar o start, na verdade ele está incluído como um script:
Se A), fica muito mais difícil, especialmente se você deseja iniciar um programa Linux para exibir um arquivo .pdf em uma janela da GUI. Observe que o Windows sabe associar um aplicativo padrão para abrir um arquivo pdf, mas o WSL não possui as informações. Portanto, mesmo que você tenha um Desktop em execução no WSL , precisará associar um aplicativo GUI do Linux para abrir o pdf.
Nota para esclarecer, no WSL você executa executáveis linux, não executáveis do windows:
fonte
Como Martijn observou, esta é a maneira correta de executar / abrir um aplicativo / arquivo do Windows.
Achei muito útil trabalhar isso em um script bash que eu mantenho em uma pasta que está no caminho do sistema. Eu o nomeio
start
e façochmod 0744
no arquivo para torná-lo executável. O$*
meio para transmitir todos os argumentos da linha de comando que você forneceu ao scriptcmd.exe
.Com esse comando no caminho do sistema, posso comandos como este no Linux que abrem no Windows:
start FileXYZ.pdf
// Abre o PDF no visualizador de PDF atribuído padrão no Windowsstart explorer .
// Abre a pasta WSL atual no Windows Explorerstart MyApp.exe
// Inicia o aplicativo Windowsfonte
a\ whitespace.pdf
. Iniciar seu scriptstart.sh a\ a.pdf b\ b.pdf
não funcionaria.explorer.exe .
abre o caminho atual no Windows Explorereopen
pode abrir vários arquivos (, diretórios e URI) no WSL.https://github.com/ko1nksm/eopen-ecd
Exemplos
fonte
Isso funcionou muito melhor para mim:
fonte
Você pode chamar o
Start-Process
comando do powershell de dentro da WSL:powershell.exe -Command Start-Process file
Para que isso funcione também com caminhos absolutos, você pode usar o
wslpath -wa
comando para converter o caminho em um caminho do Windows.powershell.exe -Command Start-Process `wslpath -wa /absolute/path/to/file`
Isso tem uma vantagem sobre a
cmd.exe
solução: para compartilhamentos de rede montados,wslpath
produz um caminho UNC\\server\share\
. Esses caminhos UNC não podem ser manipuladoscmd.exe
.fonte
Descobri que o explorer.exe funciona muito bem para encontrar o caminho resolvido correto (mesmo nos diretórios de rede montados) e iniciar a ferramenta padrão. O problema é que você não pode ter caminhos no nome do arquivo; portanto, é necessário criar uma pequena função / script auxiliar para iniciar o explorer corretamente, por exemplo:
Atualização: o Ngo apontou outro script,
wslpath
que faz a conversão do caminho, para que você possa chamar o explorer.exe diretamente no caminho (após a conversão). Então a função acima se torna trivial e pode ser facilmente transformada em um alias.fonte
Tente usar
wsl-open
. Ele abre os arquivos com o aplicativo padrão do Windows e pode ser baixado aqui: https://github.com/4U6U57/wsl-open .fonte