La respuesta de Andy es correcta en mi opinión. Estoy añadiendo esta respuesta para proporcionar algunas alternativas que tal vez desees considerar:
Hay dos aspectos en tu pregunta: 1) el aspecto del PATH
en relación con la ubicación de tu script (snapshot_remove
), y 2) la sintaxis del propio script. Según entiendo tu pregunta y el mensaje de error que has publicado, parece que el aspecto principal está relacionado con tu PATH
; es decir, la variable que define dónde el sistema busca los comandos ejecutables que introduces.
Empezaremos abordando el aspecto del PATH
:
La variable de entorno PATH
es la clave para parte de tu pregunta. PATH
determina dónde buscará el sistema (en qué carpetas) el "comando" que introduces. Parece que tu script está ubicado en una carpeta que no está incluida en tu $PATH
. Esto explicaría tu mensaje de error:
"bash: snapshot_remove: comando no encontrado"
Tienes dos (2) opciones para resolver este error:
- mover tu script a una carpeta que sí esté en tu
PATH
, o
- modificar tu variable de entorno
PATH
para incluir la carpeta que contiene snapshot_remove
Comencemos con la Opción 1: Mover tu script:
Abre un Terminal y escribe echo $PATH
en el indicador para ver lo que contiene. Con suerte, contendrá la carpeta usr/local/bin
. Si no lo hace, podría haber varias razones por las que no está (¿Apple pudo haber sido inconsistente??), pero el problema se soluciona fácilmente como se muestra en el Anexo: Cómo modificar /etc/paths
.
Tradicionalmente, en una configuración de sistema tipo Unix, la carpeta usr/local/bin
(o quizás /usr/local
) sería la ubicación preferida para archivos ejecutables de origen local, como tu script snapshot_remove
. Esta ubicación está en conformidad con el "Estándar de Jerarquía de Sistemas de Archivos". Por lo tanto, podrías colocar tu script en esa carpeta y olvidarte de todo lo demás asociado con actualizar tu variable de entorno PATH
.
Opción 2: Modificar tu variable de entorno PATH
La alternativa a colocar tu script en /usr/local/bin
es modificar la variable de entorno PATH
en tu entorno. Supondré que tu script está en tu carpeta Usuarios
(Usuarios/quientuseas
). Puedes añadir esa carpeta a tu variable de entorno PATH
como un cambio temporal, o puedes agregarlo como un cambio permanente:
Cambio temporal:
Asumiendo que estás usando zsh
, haz esto desde Terminal:
path+=/Usuarios/quientuseas
# O...
path+=/Usuarios/quienquiera/mismyscripts
Cambio permanente:
Abre tu editor favorito y añade lo siguiente a .zshrc
(o .bashrc
si usas bash
):
cd /Usuarios/quienquiera
nano .zshrc
#
# añade una línea:
export PATH=/Usuarios/quienquiera:$PATH
NOTA: Se ha informado que Apple no incluye un archivo ~/.zshrc
. Si este es tu caso, simplemente crea el archivo tú mismo y modifícalo como se describe arriba.
Ahora abordemos el aspecto de la "sintaxis del script":
Según entiendo tu script, estás usando find
para eliminar todos los archivos en una serie de carpetas que fueron modificados
hace más de 25
horas. Si entendí correctamente tu objetivo, entonces sigue leyendo.
find
parece una elección razonable para este objetivo. Creo que la respuesta de Andy ofrece sugerencias razonables que simplificarán tu script. No estoy muy bien situado para abordar este aspecto ya que no he usado la versión de find
de Apple por muchos años (yo uso la versión de find
GNU de MacPorts). Pero puedo sugerir algo en esta línea (usar -tipo f
y -mindepth 1
juntos quizás sea demasiado cauteloso):
find /home/web2py/web2py_apps/snapshots/ -mindepth 1 -tipo f -mtime +25 -delete
Estoy ignorando tu uso de /home
, que en mi conocimiento no existe en macOS.
También podría recomendarte mv
er los archivos a una carpeta en /tmp
- en lugar de -delete
(es decir, -execdir mv f /tmp/X
). Esto te daría la oportunidad de reconsiderar esas eliminaciones antes de hacerlas permanentes. En cualquier caso, te sugiero reemplazar -delete
con -print
para verificar que las cosas funcionen correctamente en todos los casos.
Y por último, te recomendaría que leas esta (buena y razonable) explicación sobre cómo se interpreta mtime
. Creo que esta explicación se aplica a la versión GNU de find
, pero no sé si también se aplica a la versión de Apple (es decir, /usr/bin/find
).
Anexo: Cómo modificar /etc/paths
Abre el archivo /etc/paths
en tu editor favorito (también conocido como /private/etc/paths
). Supongo que nano
es tu editor aquí, pero sustituye por lo que uses en lugar de eso. También ten en cuenta: Si no tienes configurado sudo
, puedes hacerlo ingresando el comando sudo visudo
en Terminal. Una vez que puedas usar sudo
:
sudo nano /etc/paths
#
# añade una línea al archivo:
/usr/local/bin
# guarda y sale del editor