2011-02-10 12 views

Respuesta

79

Agregue source /whatever/file (o . /whatever/file) en .bashrc donde desea que se incluya el otro archivo.

+16

Debe manejar inexistencia gracia. por ejemplo, verificar la existencia (test -r path &&. path) o ignorar errores (.path 2>/dev/null) –

+1

@William Pursell IMO es más fácil probar una vez, luego escribir código para casos, que el 99.99% nunca ocurre . – Daniel

+3

@Daniel No estoy de acuerdo. Las cosas que suceden .01% del tiempo pueden ocurrir miles de veces por segundo. Y tener un .bashrc en un $ HOME montado en NFS podría significar que la tasa de fallas en la obtención de un archivo es mucho mayor que .01% –

28

Para evitar errores, primero debe comprobar para asegurarse de que el archivo existe. Luego fuente el archivo. Haz algo como esto

# include .bashrc if it exists 
if [ -f $HOME/.bashrc_aliases ]; then 
    . $HOME/.bashrc_aliases 
fi 
+3

también al final de .bashrc_aliases o cualquier archivo que obtengo me echo a un extracto como echo "Alias ​​cargadas" – Nick

+1

Pensé para mis adentros: "~ es $ HOME, ¿verdad?" Por desgracia, 'if [-f ~/.bashrc_aliases];' no funciona. – modle13

2

Si tiene varios archivos que desea cargar que puede o no existir, se puede mantener un poco elegante mediante el uso de un bucle.

files=(somefile1 somefile2) 
path="$HOME/path/to/dir/containing/files/" 
for file in ${files[@]} 
do 
    file_to_load=$path$file 
    if [ -f "$file_to_load" ]; 
    then 
     . $file_to_load 
     echo "loaded $file_to_load" 
    fi 
done 

La salida se vería así:

$ . ~/.bashrc 
loaded $HOME/path/to/dir/containing/files/somefile1 
loaded $HOME/path/to/dir/containing/files/somefile2 
+0

Seguramente no necesita verificar la existencia de archivos nuevamente dentro del ciclo? (A menos que tenga una lista muy dinámica de archivos en el disco) –

+0

Solo existe un control para la existencia de archivos. Si su entorno de trabajo actual no tiene el archivo descrito en la lista, simplemente se cargará un error en ese archivo y se creará ruido visual. Un enfoque más ideal sería obtener una lista de archivos, luego recorrerla en lugar de definir una lista estática. – modle13

0

prefiero comprobar la versión del primero y asignar la variable de configuración de ruta:

if [ -n "${BASH_VERSION}" ]; then 
    filepath="${HOME}/ls_colors/monokai.sh" 
    if [ -f "$filepath" ]; then 
    source "$filepath" 
    fi 
fi 
Cuestiones relacionadas