Intento comprender este fragmento de código:
if [ -f /etc/bashrc ]; then . /etc/bashrc fi
No estoy seguro qué significa -f exactamente.
Respuesta
La página de manual relevante para verificar esto es la del propio shell, bash
, porque -f
es una funcionalidad que proporciona el shell, es «un bash incorporado.
En mi sistema (CentOS 7), la excelente página de manual lo cubre. Es posible que grep
no dé los mismos resultados en otras distribuciones. Sin embargo, si ejecuta man bash
y luego busca «-f», debería dar los resultados que necesita.
$ man bash | grep -A1 "\-f file$" -f file True if file exists and is a regular file. $
Respuesta
En resumen, el fragmento de código obtendrá el archivo /etc/bashrc
si existe, y el la existencia se verifica mediante el comando [
para el cual -f
es un operador / parámetro.
en la secuencia de comandos de shell evalúa el estado de salida de los comandos – 0 en caso de éxito. Entonces, es correcto hacer algo como esto:
if ping -c 4 google.com; then echo "We have a connection!" fi
El comando, en su caso, es [
que también se conoce como comando test
. Por lo tanto, «sería perfectamente válido hacerlo
if test -f /etc/bashrc; then . /etc/bashrc fi
El -f flag verifica dos cosas: la ruta proporcionada existe y es un archivo normal. Si /etc/bashrc
de hecho es un directorio o falta, la prueba debería devolver un estado de salida distinto de cero para señalar una falla
Este comando originalmente era un comando separado, es decir, no parte de los comandos integrados del shell. Hoy en día, la mayoría de los shells similares a Bourne lo tienen integrado, y eso es lo que utilizará el shell.
En una nota al margen, el /etc/bashrc
parece un archivo adicional innecesario que está usando su administrador o autor original del fragmento de código. Existe /etc/bash.bashrc
, que está diseñado como un archivo rc de todo el sistema para bash, por lo que uno esperaría que se usara.
Consulte también:
)