bash – Agregue el directorio a $ PATH si aún no está allí

Pregunta:

¿Alguien ha escrito una función bash para agregar un directorio a $ PATH solo si aún no está allí?

Normalmente agrego a PATH usando algo como:

export PATH=/usr/local/mysql/bin:$PATH

Si construyo mi PATH en .bash_profile, entonces no se lee a menos que la sesión en la que estoy sea una sesión de inicio de sesión, lo cual no siempre es cierto. Si construyo mi PATH en .bashrc, se ejecuta con cada subcapa. Entonces, si abro una ventana de Terminal y luego ejecuto la pantalla y luego ejecuto un script de shell, obtengo:

$ echo $PATH
/usr/local/mysql/bin:/usr/local/mysql/bin:/usr/local/mysql/bin:....

Voy a intentar construir una función bash llamada add_to_path() que solo agrega el directorio si no está allí. Pero, si alguien ya ha escrito (o encontrado) algo así, no perderé el tiempo en ello.

Respuesta:

Desde mi .bashrc:

pathadd() {
    if [ -d "$1" ] && [[ ":$PATH:" != *":$1:"* ]]; then
        PATH="${PATH:+"$PATH:"}$1"
    fi
}

Tenga en cuenta que PATH ya debería estar marcado como exportado, por lo que no es necesario volver a exportarlo. Esto verifica si el directorio existe y es un directorio antes de agregarlo, lo que puede que no le importe.

Además, esto agrega el nuevo directorio al final de la ruta; para poner al principio, use PATH="$1${PATH:+":$PATH"}" lugar de la línea PATH= anterior.

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım