
BASH 사용: 대답은 분명할 수 있지만 나에게는 효과가 없습니다.
> echo $PWD
/root/fcm
> readlink -f ~
/root
> # but then with a variable or literal
> a='~'
> readlink -f $a
/root/fcm/~
> readlink -f "~"
/root/fcm/~
bash나 readlink를 대체하는 사람은 '/root/'만 받을 것으로 예상됩니다 .
답변1
쉘은 물결표 확장을 수행합니다. readlink
아니요.Bash는 따옴표 안에 물결표를 확장하지 않습니다..
readlink -f $a
변수 확장 전에 물결표 확장이 발생하기 때문에 원하는 작업을 수행하지 않습니다. 즉, 변수는 로 확장되지만 ~
물결표는 더 이상 확장되지 않습니다.
Bash가 작업을 수행하는 순서는 중괄호 확장, 물결표 확장, 매개변수 및 변수 확장, 명령 대체, 산술 확장, 토큰화, 경로 이름 확장입니다.
어떤 경우에는 $HOME
물결표를 사용하는 것이 다른 변수처럼 동작하기 때문에 물결표를 사용하는 것보다 나을 수도 있습니다.
또한, 루트로 로그인하지 마십시오...