사용자 이름에 공백과 아포스트로피가 포함된 경우 Ubunth WSL에서 bash 별칭을 만드는 방법

사용자 이름에 공백과 아포스트로피가 포함된 경우 Ubunth WSL에서 bash 별칭을 만드는 방법

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 측 환경 변수는 $WSLENVWSL 측 환경 변수에 매핑될 수 있습니다. 예를 들어 /mnt/c/Users/username/Windows 측은 이를 %USERPROFILE%환경 변수로 저장합니다.

이렇게 하려면 먼저 명령 프롬프트에서 관리자 권한으로 이 명령을 실행하여 Windows에서 변수를 추가하세요.

setx WSLENV USERPROFILE

.bashrc그런 다음 (또는 유사한 파일)에 별칭을 추가합니다. 예를 들어,

alias windocs='cd $(wslpath $USERPROFILE/Documents)'

이는 wslpathWindows 스타일 경로(백슬래시)를 *NIX 스타일 경로(슬래시)로 변환합니다. 개략도에서,

   Windows        <--->      WSL
C:\Users\username <--->  /mnt/c/Users/username
USERPROFILE       <--->  WSLENV

읽다WSL과 Windows 간에 환경 변수 공유자세한 내용은 블로그를 참조하세요.

관련 정보