root@desktop:~# strace -s 1120 -a 110 cp 1 /tmp/23344
Сисколом открывается файл «1».
open(«1», O_RDONLY). Но как ядро узнало, что он находится в моём домашнем каталоге? В вызове open этого же нигде не указано? Если вместо cp 1, указать cp ~/1 то bash преобразует путь и в параметрах open будет виден путь полностью
stat("/tmp/123456", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
stat("1", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
stat("/tmp/123456", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
open("1", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
open("/tmp/123456", O_WRONLY|O_TRUNC) = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
read(3, "", 32768) = 0
close(4) = 0
close(3) = 0