En la Terminal, cuando se llama el comando "cd", también se ejecuta el comando "head" de libwww-perl

1

Actualmente, en Terminal, cuando ejecuto un comando cd , también ejecuta el comando head de LWP.

A continuación, una copia de la salida del terminal:

laptop:bin user$ cd ~
Unknown option: n
Usage: head [-options] <url>...
    -m <method>   use method for the request (default is 'HEAD')
    -f            make request even if head believes method is illegal
    -b <base>     Use the specified URL as base
    -t <timeout>  Set timeout value
    -i <time>     Set the If-Modified-Since header on the request
    -c <conttype> use this content-type for POST, PUT, CHECKIN
    -a            Use text mode for content I/O
    -p <proxyurl> use this as a proxy
    -P            don't load proxy settings from environment
    -H <header>   send this HTTP header (you can specify several)

    -u            Display method and URL before any response
    -U            Display request headers (implies -u)
    -s            Display response status code
    -S            Display response status chain
    -e            Display response headers
    -d            Do not display content
    -o <format>   Process HTML content in various ways

    -v            Show program version
    -h            Print this message

    -x            Extra debugging output
laptop:bin user$

He revisado ~/.bash_profile y ~/.bashrc pero solo hay tres declaraciones de exportación y no hay alias o algo así. Es como sigue:

[[ -s "/Users/user/.rvm/scripts/rvm" ]] && source "/Users/user/.rvm/scripts/rvm"  # This loads RVM into a shell session.
### Added by the Heroku Toolbelt
export PATH="/Applications/XAMPP/xamppfiles/bin:/usr/local/heroku/bin:$PATH"
export PATH=/Users/user/bin/Sencha/Cmd/3.1.2.342:$PATH
export SENCHA_CMD_3_0_0="/Users/user/bin/Sencha/Cmd/3.1.2.342"
export PATH=$PATH:/Applications/acquia-drupal/drush

De la lectura, parece que la instalación de LWP podría haber sobrescrito el comando /usr/bin/head , pero lo he comprobado y es el OSX. Sin embargo, cuando llamo a head desde la Terminal, en su lugar invoca el comando de cabecera LWP.

Por solicitud de patrix, aquí están los contenidos de ~/.rvm/scripts/rvm : enlace

Seguiré intentándolo y actualizaré la pregunta con nueva información si es relevante.

Información adicional:

laptop:dir user$ alias cd
-bash: alias: cd: not found
laptop:dir user$ which cd
/usr/bin/cd
laptop:dir user$ which head
/Applications/XAMPP/xamppfiles/bin/head

La salida de echo "$PS1"; echo "$PROMPT_COMMAND" es:

\h:\W \u\$ 
update_terminal_cwd;

La salida de type -a update_terminal_cwd es:

update_terminal_cwd is a function
update_terminal_cwd () 
{ 
    local SEARCH=' ';
    local REPLACE='%20';
    local PWD_URL="file://$HOSTNAME${PWD//$SEARCH/$REPLACE}";
    printf '\e]7;%s\a' "$PWD_URL"
}

La salida de type -a cd es:

cd is a function
cd () 
{ 
    if builtin cd "$@"; then
        __rvm_do_with_env_before;
        __rvm_project_rvmrc;
        __rvm_after_cd;
        __rvm_do_with_env_after;
        return 0;
    else
        return $?;
    fi
}
cd is a shell builtin
cd is /usr/bin/cd
    
pregunta Esteban Brenes 22.01.2014 - 13:04

1 respuesta

4

Voy a asumir que estás usando bash .

Entonces, en ese caso, cuando solo escribes cd , debería estar ejecutando el bash incorporado. Esto es lo que tiene el problema.

Para confirmar esto, intente usar la versión externa: en el símbolo del sistema escriba /usr/bin/cd y debe ir a su directorio de inicio sin problemas.

Ahora comprobemos en qué podría estar el otro cd .

type -a cd debería darnos

cd is a shell builtin
cd is /usr/bin/cd

which head debería darnos /usr/bin/head

alias podría darnos una lista larga pero nada apuntando hacia un alias para cd

Las variables de entorno del CD deben tener entradas sanas:

CDARGS_NODUPS=1
CDARGS_SORT=0
CDPATH='.:~:~/bin:~/dev:/usr:/'

Lo mismo con:

PROMPT_COMMAND='history -a; history -n; printf "\e]1;${PWD}\a"'
PS1='\[3[34m\]\h:\W \u$\[3[0m\] '
SHELLOPTS=braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor

Si todo eso está bien, mi dinero estaría en cd siendo redefinido por una función incorporada que ha ido en forma de pera. En la línea de comando set | less le permitirá desplazarse a través de un volcado de todas sus variables de shell, alias y funciones. Si escribe / , puede buscar en el archivo cd (observe el espacio) y ver si está sucediendo.

Una vez que haya descubierto que "alguien", en su caso rvm , está definiendo una función de shell llamada cd , entonces puede desinstalar al culpable o encontrar dónde realiza el trabajo desagradable y cambiar el nombre de la función. a algo como 'rcd' en lugar de 'cd'. Como la función de shell aparece primero en la salida de type , la función incorporada cd se ignora, excepto cuando la función la llama (eso es lo que hace builtin cd en la definición de la función: llamar a la versión integrada).

Casi garantizo que la función está definida en /Users/user/.rvm/scripts/rvm .

Comenzaría por desinstalar rvm y luego lo reinstalaré para ver si eso lo corrige. ¿Lo estás instalando usando MacPorts o Homebrew?

    
respondido por el Tony Williams 23.01.2014 - 10:58

Lea otras preguntas en las etiquetas