Modifica: questo è un duplicato di /programming/998626/meaning-of-tilde-in-linux-bash-not-home-directory/ . Non ho la reputazione di chiudere questa domanda come duplicata.
Non mi riferisco a ~
come nella directory home ma piuttosto a questo:
$ ls ~foo/bar
/some/mount/point/foo/bar
Tuttavia, se lo provo con un punto di montaggio diverso, ad esempio:
$ mount | ag "/dev "
devfs on /dev (devfs, local, nobrowse)
$ ls /dev/stdin
/dev/stdin
$ ls ~stdin
zsh: no such user or named directory: stdin .
# bash has a similar error message:
ls: ~stdin: No such file or directory
Come si ~
chiama in questo contesto? Come funziona?
Modifica: ulteriori informazioni basate su alcuni dei commenti seguenti:
- Posso attestare che
foo
non è un nome utente sul mio sistema. - Quando si tenta di completare automaticamente
ls -lah ~
non vengono visualizzate tutte le opzioni. cioè sono in gradocd ~qux
, quandoqux
non viene visualizzato nel completamento automatico. Ancoraqux
una volta non è un utente nel mio sistema. - Se è importante
/some/mount/point
è una condivisione di rete. - Tutti i dettagli suggeriscono alcuni Path Muckery con nome, una caratteristica della shell Z di espansione del percorso, ma funziona anche in bash, che apparentemente non supporta cose come i percorsi con nome della shell Z.
/some/mount/point
sicuramente non è la mia directory home. cd ~
mi porta a /Users/$username/
- che partite$HOME
zsh
sembra utilizzare anche la tilde per indicare le directory con nome.
bash -c "ls ~foo/bar"
) - che non ha directory nominate. Inoltre anche all'interno di zsh, se ispeziono il file env
, non vedo alcuna directory impostata. Sono su Mac OS e ritengo che questa sia una funzionalità specifica di OS X.
~foo
. Prendi la stringa attuale (non l'esempio foo
) e fallo grep "actual username" /etc/passwd
. ~text
dovrebbe funzionare solo per i nomi utente di accesso possibili secondo il manuale bash (non significa necessariamente che sia effettivamente in grado di accedere; nel caso di utenti del sistema come ~lp
, ad esempio). In tutti i miei test, ~string
corrisponde a string
essere username.
~foo
è la home directory dell'utentefoo
. Se l'utente non è specificato, l'utente corrente è l'impostazione predefinita.