저는 WSL2(Ubuntu 22.04.1 LTS)를 사용하고 있으며 xdg-open을 얻으려면 Edge-browser를 참조해야 합니다. 경로에 공백이 있어서 오류가 발생합니다. 이 공간에서 어떻게 탈출할 수 있나요? 내보낸 변수 BROWSER에 경로가 올바르게 표시됩니다.
oliverk@KPW00WP3Q:/mnt/c/Users/E547766/Documents$ export BROWSER="/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe"
oliverk@KPW00WP3Q:/mnt/c/Users/E547766/Documents$ xdg-open https://stackoverflow.com/questions/24683221
/usr/bin/xdg-open: 882: /mnt/c/Program: not found
/usr/bin/xdg-open: 882: /mnt/c/Program: not found
xdg-open: no method available for opening 'https://stackoverflow.com/questions/24683221'
oliverk@KPW00WP3Q:/mnt/c/Users/E547766/Documents$ export BROWSER='/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe'
oliverk@KPW00WP3Q:/mnt/c/Users/E547766/Documents$ xdg-open https://stackoverflow.com/questions/24683221
/usr/bin/xdg-open: 882: /mnt/c/Program: not found
/usr/bin/xdg-open: 882: /mnt/c/Program: not found
xdg-open: no method available for opening 'https://stackoverflow.com/questions/24683221'
oliverk@KPW00WP3Q:/mnt/c/Users/E547766/Documents$ $BROWSER
-bash: /mnt/c/Program: No such file or directory
oliverk@KPW00WP3Q:/mnt/c/Users/E547766/Documents$ export
declare -x BROWSER="/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe"
답변1
기존 Windows 경로를 사용하셔도 됩니다~1
export BROWSER=/mnt/c/Progra~1/Google/Chrome/Application/chrome.exe
답변2
$ export BROWSER="/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe" $ xdg-open https://stackoverflow.com/questions/24683221 /usr/bin/xdg-open: 882: /mnt/c/Program: not found
오류 메시지는 단어 분할에 실제로 무슨 일이 일어나고 있는지를 암시합니다.
그게 다야. xdg-open
예쉘 스크립트$BROWSER
시도할 브라우저의 콜론으로 구분된 목록으로 처리되며 ( $PATH
작동 방식과 유사) 각 브라우저에 대해 실행을 시도합니다.
$browser "$url"
인용되지 않은 내용 으로 $browser
. 이는 공백(*)으로 분할되며 이에 대해 수행할 수 있는 작업이 없음을 의미합니다. 단점은 공백이 있는 경로가 작동하지 않고 전역 문자가 있는 경로가 문제를 일으킬 수 있다는 것입니다. 이점은 이를 사용하여 매개변수를 전달할 수 있다는 것입니다(해당 매개변수에 포함된 공백 등이 필요하지 않은 경우).
IFS
(* 이는 스크립트 외부에서 수정된 값을 가져오고 스크립트 시작 시 재설정을 무시하는 셸로 실행되지 않는 한 스크립트가 사용하는 것으로 보이는 기본값입니다 .)IFS
가장 쉬운 해결 방법은 아마도 경로에 공백이 없는 심볼릭 링크를 만들고 이를 브라우저에 지정한 다음 심볼릭 링크의 경로를 $BROWSER
.