Ner*_*nux 10 command-line bash home-directory dash-shell sh
在终端中,引用 home 的一种方法是使用~/
. 我不明白这是如何工作的,因为输出file ~/
是:
/home/admin/: directory
Run Code Online (Sandbox Code Playgroud)
并且只是运行~/
结果:
-bash: /home/admin/: Is a directory
Run Code Online (Sandbox Code Playgroud)
那么转换~/
成/home/admin
什么?
~/
似乎也适用于/bin/dash
,所以我也知道它不是特定于 bash 的。
Eli*_*gan 15
POSIX需要波浪号扩展(请参阅第一个链接页面)并出现在所有现代Bourne 风格的 shell 中。这包括流行的贝壳bash
,ksh93
和zsh
,也比较简约贝壳一样mksh
,dash
和busybox ash
。
在实践中,不同的 POSIX 兼容 shell 有时在波浪号扩展的精确细节上有所不同,在未指定的情况下,HOME
将使用但未设置或为空,以及允许将~
符号用于扩展用户主目录之外的其他目的。例如,波浪号扩展 inbash
还提供了分别使用和访问PWD
和OLDPWD
变量值的简写。~-
~+
但是,在典型情况下,它在 Bourne 风格的 shell 中的工作方式大致相同。这些是典型案例(但请注意,这种分离它们的方式不是官方的,这只是我呈现材料的方式):
~
或~/
本身扩展到您的主目录。~/
后跟更多路径组件扩展为从您的主目录开始的路径。~username
或~username/
本身扩展到用户名是username
.~username/
后跟更多的路径组件扩展为从用户名是 的用户的主目录开始的路径username
。~
是“简写” $HOME
~
是一种“速记”方式,$HOME
换句话说就是你的主目录。它适用于 shell(例如bash
),称为“波浪号扩展”。
如果添加尾部斜杠,则表示您在谈论目录。
例子:
$ ls -d ~/
/home/sudodus/
$ ls -d ~
/home/sudodus
$ ls -d $HOME
/home/sudodus
$ sudo -i
[sudo] lösenord för sudodus:
# ls -d ~/
/root/
# ls -d ~
/root
# exit
logout
$ ls xournal.png
xournal.png
$ LANG=C ls xournal.png/
ls: cannot access 'xournal.png/': Not a directory
Run Code Online (Sandbox Code Playgroud)