В bash:
$ type :
: is a shell builtin
$ type true
true is a shell builtin
Похоже, они одинаковы, но они не дают ту же системную трассировку:
$ strace :
strace: :: command not found
$ strace true
execve("/bin/true", ["true"], [/* 82 vars */]) = 0
[snip]
exit_group(0) = ?
Я попытался различить strace bash -c : 2>:.txtи strace bash -c true 2>true.txt, но не смог найти никаких различий между ними, кроме мест памяти.
В dash:
$ type :
: is a special shell builtin
$ type true
true is a shell builtin
ОК, поэтому они не одинаковы. help :и help trueне очень полезны, и они возвращают то же самое в bashи dash. Есть ли практическая разница между ними, кроме того, что :экономит три байта и делает сценарии менее читаемыми?