Si usa el "! env_reset" Opción de desarmarlo y " ruta de seguridad "no está establecido en el archivo de su sudor, entonces las opciones" env_check "y" env_delete "puede eliminar que PATH esté exento de reinicio (es decir, funcionan como entradas de la lista negra).
Una causa más probable sería que un sistema / etc / bashrc o su propio .bashrc restablezca PATH a algún valor estándar (y no agregue a la ruta existente, según sea necesario).
En mi propio "sistema" bashrc (que mantengo en / etc / local y se llama después del sistema bashrc), me cuesta mucho no sobrescribir la ruta pasada con algunas funciones definidas al iniciar sesión:
# used in _path_op below
function empty {
[[ $# -lt 1 ]] && return -1
[[ -f $1 && ! -s $1 ]] && return 0
[[ -d $1 ]] && {
local -a entries=("$1"/*)
[[ ${entries[0]} == "$1/*" ]] && return 0
}
return 1
}
function _path_has_subpath { [[ ${!1} =~ (:$2:|^$2:|:$2$) ]] ; }
function _path_op {
(($#<3)) && return 1 # 3rd arg is path to <X>pend
local fmt="$1" pathname="$2"; shift 2
while (($#)); do
[[ -d $1 ]] && ! empty "$1" && {
_path_has_subpath "$pathname" "$1" ||
eval "export $(set $pathname $1; eval "echo $fmt")"
}
shift;
done
}
# called with name of path (ex. 'PATH' & one or more sub paths
# each of these prepend an "assign FORMAT" to the passed-in PATHVAR + pathcomp
function _path_append { _path_op '$1=\"${!1}:$2\"' "$@" ; }
function _path_prepend { _path_op '$1=\"$2:${!1}\"' "$@" ; }
typeset -x _path_append _path_prepend _path_has_subpath _path_op
Los llamo a través de:
_path_append PATH /opt/kde3/bin /usr/local/bin "$PATH_HOME/bin"
_path_prepend PATH "$PATH_HOME/bin/lib"
Por supuesto, si el problema está en la base de su distribución, puede presentar un error ... ;-)
(Esto supone que no estás llamando a sudo con la "-i" que dice que debes comenzar con un nuevo entorno).
FWIW, al principio y al final de mis diversos archivos de perfil, bashrc y env y sus subarchivos ... Y en las versiones de mi distro (hay que leerlos en una actualización) Pongo estrofas de depuración que normalmente están inactivas. Al principio:
[[ ${DEBUG:-} || -O /tmp/debug_local ]] && {
echo "(${#BASH_LINENO[@]:-""})entering $BASH_SOURCE ..." >&2;
[[ -O /tmp/debug_local ]] && source /tmp/debug_local ; }
y punto:
[[ ${DEBUG:-} || -O /tmp/debug_local ]] && {
echo "(${#BASH_LINENO[@]:-""})exiting $BASH_SOURCE ..." >&2;
Entonces, si necesito depurar un problema como este, puedo tocar / tmp / debug_local y creará inicios de sesión ruidosos para todos los usuarios en mi sistema (que normalmente solo soy yo en el sistema en el que tengo esto).
También de uso, si activa "-x" está cambiando su línea de PS4:
#export PS4='>>\
[$(__age)]${BASH_SOURCE:+${BASH_SOURCE[0]}}#i\
${LINENO}${FUNCNAME:+(${FUNCNAME[0]})}> '
(Lo anterior es todo una línea, dividida con barras diagonales inversas - también es un comentario, es decir, no comentar)
env_reset
y tal vezsecure_path
banderas de ayuda? Verman 5 sudoers
y aquí .