¿Cuál es la forma ideal de intercambiar entradas en la variable de entorno $PATH?

¿Cuál es la forma ideal de intercambiar entradas en la variable de entorno $PATH?

En Linux y/o Mac OSX, ¿cuál es la mejor manera de automatizar el movimiento de una entrada en la variable de entorno $PATH al frente del valor como este?

/foo/bar:/uno/dos/tres:/opt/local/bin:/home/user/bin

se convierte

/home/usuario/bin:/foo/bar:/uno/dos/tres:/opt/local/bin

Actualmente estoy usando sed para lograr esto, pero me gustaría saber si existe una solución más sencilla.

Respuesta1

Creo que esto es lo más sencillo:

awk 'BEGIN{FS=OFS=":"}{print $4,$1,$2,$3}' <<< $PATH

Respuesta2

Rápidamente podrías escribir:

dir=/home/user/bin
PATH=$dir:${PATH//:$dir/}

Si tienes algo como

PATH=/first:/second:/home/user/bin/subdir:/home/user/bin

entonces esto es más robusto:

tmp=":$PATH:"
tmp=$dir${tmp//:$dir:/:}
PATH=${tmp%:}

información relacionada