In Terminale, quando viene chiamato il comando "cd", viene eseguito anche il comando "head" di libwww-perl

1

Attualmente, in Terminale, quando eseguo un comando cd , esegue anche il comando head di LWP.

Segue una copia dell'output del Terminale:

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$

Ho esaminato ~/.bash_profile e ~/.bashrc ma ci sono solo tre istruzioni di esportazione e nessun alias o qualcosa del genere. È il seguente:

[[ -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

Dalla lettura, sembra che l'installazione di LWP possa aver sovrascritto il comando /usr/bin/head , ma ho controllato ed è quello OSX. Tuttavia, quando chiamo head da Terminale, invoca invece il comando LWP head.

Richiesta di Per patrix, ecco i contenuti di ~/.rvm/scripts/rvm : link

Continuerò a provare le cose e aggiornerò la domanda con nuove informazioni, se pertinenti.

Informazioni aggiuntive:

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

L'output di echo "$PS1"; echo "$PROMPT_COMMAND" è:

\h:\W \u\$ 
update_terminal_cwd;

L'output di type -a update_terminal_cwd è:

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"
}

L'output di type -a cd è:

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
    
posta Esteban Brenes 22.01.2014 - 13:04
fonte

1 risposta

4

Suppongo che tu stia utilizzando bash .

Quindi in questo caso quando digiti cd dovrebbe essere in esecuzione il bash built-in. Questo è ciò che ha il problema.

Per confermare questo prova usa la versione esterna - al prompt dei comandi digita /usr/bin/cd e dovresti andare alla tua home directory senza problemi.

Ora controlliamo cosa può fare l'altro cd .

type -a cd dovrebbe darci

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

which head dovrebbe darci /usr/bin/head

alias potrebbe darci una lunga lista ma nulla punta ad un alias per cd

Le variabili di ambiente del CD dovrebbero avere voci sensate:

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

Lo stesso 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

Se tutto ciò è OK, il mio denaro sarebbe in cd ridefinito da una funzione incorporata che ha assunto la forma di una pera. Alla riga di comando set | less ti permetterà di sfogliare un dump di tutte le tue variabili, alias e funzioni della shell. Se digiti / puoi cercare nel file cd (notare lo spazio) e vedere se ciò accade.

Una volta che hai scoperto che "qualcuno" - nel tuo caso rvm - sta definendo una funzione di shell chiamata cd allora puoi disinstallare il colpevole o trovare dove fa il cattivo lavoro e cambiare il nome della funzione a qualcosa come 'rcd' invece di 'cd'. Dato che la funzione di shell è elencata per prima nell'output di type , la% built-in% co_de viene ignorata eccetto dove viene richiamata dalla funzione (è ciò che sta facendo la cd nella definizione della funzione - chiamando la versione integrata).

Quasi garantirei che la funzione sia definita in builtin cd .

Vorrei iniziare disinstallando /Users/user/.rvm/scripts/rvm e quindi reinstallarlo per vedere se lo risolve. Lo stai installando usando MacPorts o Homebrew?

    
risposta data 23.01.2014 - 10:58
fonte

Leggi altre domande sui tag