Ubuntu WSL에서 다음 별칭을 만들려고 합니다.
alias windocs='cd /mnt/c/Users/Firstname L'astname/Documents/'
안타깝게도 내 사용자 이름은이름 성, 공백과 아포스트로피를 포함합니다.
백슬래시를 사용해 보았습니다.
alias windocs='cd /mnt/c/Users/Firstname\ L\'astname/Documents/'
그러나 bash는 여전히 아포스트로피를 문자열의 끝으로 해석하여 다음 오류를 발생시킵니다.
-bash: .bash_aliases: line 11: unexpected EOF while looking for matching `''
-bash: .bash_aliases: line 12: syntax error: unexpected end of file
또한 사용자 이름을 큰따옴표로 묶어 보았습니다.
alias windocs='cd /mnt/c/Users/"Firstname L'astname"/Documents/'
같은 오류가 발생합니다.
이 별칭이 작동하도록 하려면 어떻게 작성해야 합니까? 매번 문서 폴더까지 CD를 넣어야 하는 것은 고통스럽습니다.
답변1
작은 따옴표로 묶인 문자열 내의 작은 따옴표는 이스케이프할 수 없지만 운 좋게도 별칭 정의 주위에 큰 따옴표를 사용한 다음 디렉터리 이름 주위에 큰 따옴표를 사용할 수 있습니다(이스케이프 처리).
alias windocs="cd \"/mnt/c/Users/Firstname L'astname/Documents/\""
또는 이 디렉터리를 Linux 홈 디렉터리에 심볼릭 링크할 수 있습니다.
ln -s "/mnt/c/Users/Firstname L'astname/Documents/" ~/docs
그런 다음 간단히 cd docs
(또는 cd ~/docs
홈 디렉토리에 없는 경우) 해당 위치로 이동합니다.
답변2
음, 먼저 이것부터 알아봐야겠네요. 나는 이 stackoverflow를 따라 전체 문자열을 큰따옴표로 묶었습니다.답변:
alias windocs="cd /mnt/c/Users/Firstname\ L\'astname/Documents/"
이제 괜찮아. 이는 작은 따옴표로 묶인 문자열에 대한 이스케이프 메커니즘이 없지만 큰 따옴표로 묶인 문자열에 대한 메커니즘이 있기 때문입니다(다른 답변에 따라).
답변3
Linux용 Windows 하위 시스템(WSL)만 해당, Windows 측 환경 변수는 $WSLENV
WSL 측 환경 변수에 매핑될 수 있습니다. 예를 들어 /mnt/c/Users/username/
Windows 측은 이를 %USERPROFILE%
환경 변수로 저장합니다.
이렇게 하려면 먼저 명령 프롬프트에서 관리자 권한으로 이 명령을 실행하여 Windows에서 변수를 추가하세요.
setx WSLENV USERPROFILE
.bashrc
그런 다음 (또는 유사한 파일)에 별칭을 추가합니다. 예를 들어,
alias windocs='cd $(wslpath $USERPROFILE/Documents)'
이는 wslpath
Windows 스타일 경로(백슬래시)를 *NIX 스타일 경로(슬래시)로 변환합니다. 개략도에서,
Windows <---> WSL
C:\Users\username <---> /mnt/c/Users/username
USERPROFILE <---> WSLENV
읽다WSL과 Windows 간에 환경 변수 공유자세한 내용은 블로그를 참조하세요.