Aqui está um arquivo de teste test.applescript
:
display dialog "foo" buttons {"OK"} cancel button 1 default button 1
Às 16h05 eu compilei para test.app
:
osacompile -o test.app test.applescript
Às 4:07 PM eu editei test.applescript
substituindo foo
por bar
, e então compilei novamente, sobrescrevendo o test.app
arquivo existente. (Ele foi sobrescrito com sucesso. Se eu executá-lo, a caixa de diálogo me mostra "bar", não "foo".)
display dialog "bar" buttons {"OK"} cancel button 1 default button 1
osacompile -o test.app test.applescript
Mas, mesmo assim, o date modified
valor de test.app
ainda é 4:05 PM. Por que isso? Como isso é possível?
Saída de stat -x
:
File: "test.app"
Size: 96 FileType: Directory
Mode: (0755/drwxr-xr-x) Uid: ( 501/ john) Gid: ( 20/ staff)
Device: 1,17 Inode: 79429067 Links: 3
Access: Sun Mar 23 16:05:52 2025
Modify: Sun Mar 23 16:05:52 2025
Change: Sun Mar 23 17:20:48 2025
Birth: Sun Mar 23 16:05:52 2025
Você notará que
test.app
é um diretório:O timestamp de modificação de um diretório é atualizado sempre que você adiciona, exclui ou renomeia arquivos nele. Quando você recompila o aplicativo, o conteúdo dos vários subdiretórios muda, mas nada é adicionado, excluído ou renomeado no diretório
test.app
em si.Do
osacompile(1)
manual:Então, o que você está criando é um "aplicativo ou droplet agrupado" (que é um diretório que o MacOS interpreta de uma maneira especial), não um "arquivo simples" (que é um arquivo, não um diretório).