Windows 10(빌드 1803)을 새로 설치했습니다. Microsoft Store에서 Ubuntu를 설치하고 Linux 하위 시스템을 활성화했습니다. 나는 과거에 이 작업을 여러 번 수행했지만 c
심볼릭 링크로 인해 내 디렉토리가 모두 엉망이 되는 문제를 겪은 적이 없습니다. dir
in cmd
및 ls
in WSL의 출력을 예로 들어 보겠습니다 .
C:\Users\username>dir
Volume in drive C has no label.
Volume Serial Number is BC00-A6D5
Directory of C:\Users\username
05/25/2018 12:01 AM <DIR> .
05/25/2018 12:01 AM <DIR> ..
05/25/2018 12:01 AM <DIR> 3D Objects
05/25/2018 12:01 AM <DIR> Contacts
05/25/2018 01:19 AM <DIR> Desktop
05/25/2018 12:01 AM <DIR> Documents
05/25/2018 12:01 AM <DIR> Downloads
05/25/2018 12:01 AM <DIR> Favorites
05/25/2018 12:01 AM <DIR> Links
05/25/2018 12:01 AM <DIR> Music
05/25/2018 12:06 AM <DIR> OneDrive
05/25/2018 12:01 AM <DIR> Pictures
05/25/2018 12:01 AM <DIR> Saved Games
05/25/2018 12:01 AM <DIR> Searches
05/25/2018 12:01 AM <DIR> Videos
0 File(s) 0 bytes
15 Dir(s) 88,018,132,992 bytes free
name:/mnt/c/Users/username$ ls
ls: cannot read symbolic link 'Application Data': Permission denied
ls: cannot read symbolic link 'Cookies': Permission denied
ls: cannot read symbolic link 'Local Settings': Permission denied
ls: cannot read symbolic link 'My Documents': Permission denied
ls: cannot read symbolic link 'NetHood': Permission denied
ls: cannot read symbolic link 'PrintHood': Permission denied
ls: cannot read symbolic link 'Recent': Permission denied
ls: cannot read symbolic link 'SendTo': Permission denied
ls: cannot read symbolic link 'Start Menu': Permission denied
ls: cannot read symbolic link 'Templates': Permission denied
3D Objects NTUSER.DAT{c9e9d809-5fd7-11e8-a0cd-4e0bbe2b78ad}.TM.blf
AppData NTUSER.DAT{c9e9d809-5fd7-11e8-a0cd-4e0bbe2b78ad}.TMContainer00000000000000000001.regtrans-ms
Application Data NTUSER.DAT{c9e9d809-5fd7-11e8-a0cd-4e0bbe2b78ad}.TMContainer00000000000000000002.regtrans-ms
Contacts ntuser.dat.LOG1
Cookies ntuser.dat.LOG2
[...]
동일한 디렉토리(왼쪽은 Ubuntu, 오른쪽은 cmd)를 비교하면 ls
심볼릭 링크를 나열하려는 시도가 존재하지 않는다는 것을 알 수 있습니다! 저는 이런 문제를 겪은 적이 없고 권한이나 어떤 것도 변경하지 않았기 때문에 무슨 일이 일어나고 있는지 전혀 모릅니다. 누구든지 도와줄 수 있나요?
다음은 도움이 될 수 있는 몇 가지 정보입니다.
마운트 제공
mount
rootfs on / type lxfs (rw,noatime)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,noatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,noatime)
none on /dev type tmpfs (rw,noatime,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,noatime,gid=5,mode=620)
none on /run type tmpfs (rw,nosuid,noexec,noatime,mode=755)
none on /run/lock type tmpfs (rw,nosuid,nodev,noexec,noatime)
none on /run/shm type tmpfs (rw,nosuid,nodev,noatime)
none on /run/user type tmpfs (rw,nosuid,nodev,noexec,noatime,mode=755)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noatime)
C: on /mnt/c type drvfs (rw,noatime,uid=1000,gid=1000)
그 다음에,
id -u
1000
id -g
1000
내 /etc/wsl.conf
파일은 처음부터 존재하지 않았기 때문에 파일을 만들었습니다. 그러나 이미 올바르게 설치된 것으로 mount
표시되었으므로 이것이 문제의 핵심이라고 생각하지 않습니다. c
지금 이
[automount]
enabled = true
내 질문을 간단히 말하면:cmd에서 실행하면 symlinks
확인되었으나 내 디렉터리에 없는 것 같습니다. dir
그러나 Ubuntu 명령줄에는 기호 링크가 표시됩니다. 왜 그런 겁니까? 아, 또한 sudo rm
권한이 거부되었기 때문에 삭제할 수 없습니다( 을 사용해도 ). 이건 좀 짜증나네요!
답변1
dir
cmd 실행이 확인되었습니다.
이것은 그러한 것을 확인하지 않습니다. 명령 /a
의 옵션을 사용하십시오 dir
. Unix가 아닌 Linux가 아닌 운영 체제에서 이 명령을 사용하는 방법은 dir
실제로 이 WWW 사이트의 범위를 벗어납니다. 따라서 이 질문의 기본 전제가 잘못되었음을 지적한 후 여기서 멈추겠습니다.
답변2
다음을 사용하면 다음과 같은 사실을 발견했습니다.
ls --color=tty
/mnt/c 디렉터리에서 다음과 같은 오류 메시지가 나타납니다.
ls: cannot read symbolic link 'Documents and Settings': Permission denied
ls: cannot access 'hiberfil.sys': Permission denied
ls: cannot access 'pagefile.sys': Permission denied
ls: cannot access 'swapfile.sys': Permission denied
/bin/ls
그러나 인수 없이 단순히 사용하면 깨끗한 디렉토리 목록을 얻을 수 있습니다. 따라서 명령은 디렉터리의 파일 형식에 색상을 지정하려고 시도하며 이로 인해 이러한 오류 메시지가 발생합니다.
stderr이 /dev/null로 리디렉션되면 오류 메시지도 표시되지 않습니다.
alias ls='ls --color=tty 2>/dev/null'
항상 바람직하지는 않지만 소음을 상쇄합니다.
답변3
파티에 늦었지만 어쨌든 댓글을 달고 싶었습니다. 여기서 문제는 ls --color=tty
사용할 색상을 결정하기 위해 심볼릭 링크에 액세스하려고 시도하지만 Windows에서는 해당 링크에 액세스할 수 없다는 것입니다. 이러한 오류는 무시할 수 있지만 결과적으로 발생하는 다른 오류를 확인하고 싶기 ls
때문에 단순히 이렇게 하는 것만으로 alias ls='ls --color=tty 2>/dev/null'
는 문제가 해결되지 않습니다. 대신에 다음 별칭을 사용하는 것이 좋습니다. alias ls="ls --color=tty 2> >(grep -v 'ls: cannot read symbolic link.*Permission denied')"
이는 stderr에서 문제가 있는 오류를 검색하여 필터링합니다.
이를 통해 사람들의 불만이 해소되기를 바랍니다.