Bash

讀取連結文字與變數

  • February 18, 2018

使用 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/~

我希望只收到’/root/’;

誰在做替換 bash 或 readlink?

外殼進行波浪擴展。readlink沒有。Bash 不會在引號內擴展波浪號

readlink -f $a不會做你想要的,因為波浪號擴展發生在變數擴展之前,即變數擴展為~,但波浪號不會進一步擴展。

Bash 做事的順序是:大括號擴展、波浪號擴展、參數和變數擴展、命令替換、算術擴展、分詞和路徑名擴展。

在某些情況下,使用$HOME波浪號可能比使用波浪號更可取,因為它的行為與任何其他變數一樣。

另外,請不要以root身份登錄…

引用自:https://unix.stackexchange.com/questions/347858