1 votos

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

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

A continuación se muestra 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 el ~/.bash_profile y ~/.bashrc pero sólo hay tres declaraciones de exportación y ningún alias o algo así. Es lo siguiente:

[[ -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 /usr/bin/head comando, pero lo he comprobado y es el de OSX. Sin embargo, cuando llamo a head desde el Terminal, invoca el comando LWP head en su lugar.

A petición de patrix, aquí está el contenido de ~/.rvm/scripts/rvm : http://pastebin.com/7rZVQAcy

Seguiré probando cosas, 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

4voto

Tony Williams Puntos 4903

Voy a suponer que está utilizando bash .

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

Para confirmarlo, intente utilizar la versión externa: en la línea de comandos, escriba /usr/bin/cd y debería ir a su directorio principal sin problemas.

Ahora vamos a comprobar lo que el otro cd podría estar en marcha.

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 larga lista pero nada que apunte a 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='\[\033[34m\]\h:\W \u$\[\033[0m\] '
SHELLOPTS=braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor

Si todo eso está bien, entonces mi dinero estaría en cd siendo redefinido por una función incorporada que se ha ido al garete. En la línea de comandos set | less le permitirá ver un volcado de todas sus variables, alias y funciones del shell. Si escribe / puede buscar en el archivo cd (fíjese en el espacio) y vea si eso ocurre.

Una vez que hayas descubierto a ese "alguien" - en tu caso rvm - es definir una función shell llamada cd entonces puedes desinstalar el culpable o encontrar donde hace el trabajo sucio y cambiar el nombre de la función a algo como 'rcd' en lugar de 'cd'. Como la función del shell aparece en primer lugar en la salida de type la incorporada cd es ignorado excepto cuando es llamado por la función (eso es lo que el builtin cd en la definición de la función - llamando a la versión incorporada).

Yo casi garantizaría que la función está definida en /Users/user/.rvm/scripts/rvm .

Yo empezaría por desinstalar rvm y luego reinstalar para ver si eso lo arregla. ¿Lo estás instalando con MacPorts o con Homebrew?

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X