Algunas cáscaras admiten ~
y otros no. Tal vez Apple utiliza dash
por defecto cron
concha en Catalina, y bash
en Monterey?; tal vez Apple cambie el cron
ambiente dependiendo de la fase de la luna?
Mejor que adivinar lo que Apple ha hecho (o no) en alguna versión concreta de MacOS, y en una máquina que puede tener o no modificaciones de los usuarios... ¿no sería mejor hacer algunas pruebas sencillas - preguntar cron
para decirle algo sobre su entorno? Esto sería un la verdad objetiva que no requiere ninguna suposición, y que no depende de caprichos en la documentación de Apple.
Una vez al día (o cuando lo desee), puede ejecutar un cron
trabajo que registra su entorno y alguna otra información útil de su sistema en un archivo. El archivo siempre está ahí, y nunca tiene más de 24 horas de antigüedad (suponiendo que su sistema estaba funcionando en el momento en que lo programó).
Un trabajo similar al de abajo en su crontab
respondería a sus preguntas "definitivamente" (sin embargo, véase NOTA 3. abajo):
0 12 * * * (echo $(date); echo "What is '~'?:" ~; printenv) > /Users/seamus/mycronenv.txt 2>&1
Esto produce un archivo llamado mycronenv.txt
en mi directorio $HOME que se parece a esto:
Sat Jul 30 23:35:00 CDT 2022
¿Qué es '~'? /Users/seamus
SHELL=/bin/sh
MAILTO=
USER=seamus
PATH=/usr/bin:/bin
PWD=/Users/seamus
SHLVL=1
HOME=/Users/seamus
LOGNAME=seamus
_=/usr/bin/printenv
Como puede ver, mi sistema (Catalina) cron
reconoce ~
como $HOME. Para verificar esto, añadí otro trabajo a mi crontab
(ver NOTA 1. abajo):
* * * * * (echo "Write this line to the file ~/testdir/testfile with a timestamp: "; echo $(date)) >> ~/testdir/testfile.txt 2>&1
El cual funcionó como se esperaba, escribiendo el resultado en $HOME/testdir/testfile.txt
.
Y como he utilizado la forma append de la redirección ( >>
), añade una nueva entrada cada minuto, es decir, ¡elimina este trabajo después de tu prueba!
Espero que esto ayude a aclarar la confusión - por favor, háganos saber si el problema persiste, o si tiene otras preguntas.
NOTAS:
-
Si quieres probar esto en tu máquina, crea el directorio testdir
primero:
% cd
% mkdir testdir
-
En mi sistema (Catalina), Apple ha establecido la configuración por defecto para enviarme un correo con una nota sobre mi cron
trabajo - que no es algo que quiera. En consecuencia, he añadido una línea a mi crontab
para desactivar eso:
MAILTO=""
-
En defitivamente :
Desde man sh
parece que, en lugar de ser definitivo Apple se ha dado cierto margen de maniobra: cron
puede utilizar cualquiera de las tres conchas ( bash
, dash
o zsh
) al servicio de /bin/sh
:
sh es un intérprete de comandos compatible con POSIX (shell). Se implementa reejecutando como bash(1), dash(1), o zsh(1) según lo determine el enlace simbólico ubicado en /private/var/select/sh. Si /private/var/select/sh no existe o no apunta a un shell válido, sh utilizará uno de los shells soportados.