Como acessar o fpath do usuário em oposição ao fpath do sistema com um script?

1

test.zsh:

#!/usr/bin/env zsh                                                                                                           

for f in ${fpath}; do
    echo ${f}
done

saídas:

/usr/local/share/zsh/site-functions
/usr/share/zsh/functions/Calendar
/usr/share/zsh/functions/Completion
/usr/share/zsh/functions/Completion/AIX
/usr/share/zsh/functions/Completion/BSD
/usr/share/zsh/functions/Completion/Base
/usr/share/zsh/functions/Completion/Cygwin
/usr/share/zsh/functions/Completion/Darwin
/usr/share/zsh/functions/Completion/Debian
/usr/share/zsh/functions/Completion/Linux
/usr/share/zsh/functions/Completion/Mandriva
/usr/share/zsh/functions/Completion/Redhat
/usr/share/zsh/functions/Completion/Solaris
/usr/share/zsh/functions/Completion/Unix
/usr/share/zsh/functions/Completion/X
/usr/share/zsh/functions/Completion/Zsh
/usr/share/zsh/functions/Exceptions
/usr/share/zsh/functions/MIME
/usr/share/zsh/functions/Misc
/usr/share/zsh/functions/Newuser
/usr/share/zsh/functions/Prompts
/usr/share/zsh/functions/TCP
/usr/share/zsh/functions/VCS_Info
/usr/share/zsh/functions/VCS_Info/Backends
/usr/share/zsh/functions/Zftp
/usr/share/zsh/functions/Zle

Enquanto a saída da linha de comando tem algumas entradas extras:

╭─ting@core ~/code/autojump  ‹install-zsh-local*›
╰─➤  echo $fpath       
/home/ting/code/oh-my-zsh/plugins/git
/home/ting/code/oh-my-zsh/functions
/home/ting/code/oh-my-zsh/completions
/usr/local/share/zsh/site-functions
/usr/share/zsh/functions/Calendar
/usr/share/zsh/functions/Completion
/usr/share/zsh/functions/Completion/AIX
/usr/share/zsh/functions/Completion/BSD
/usr/share/zsh/functions/Completion/Base
/usr/share/zsh/functions/Completion/Cygwin
/usr/share/zsh/functions/Completion/Darwin
/usr/share/zsh/functions/Completion/Debian
/usr/share/zsh/functions/Completion/Linux
/usr/share/zsh/functions/Completion/Mandriva
/usr/share/zsh/functions/Completion/Redhat
/usr/share/zsh/functions/Completion/Solaris
/usr/share/zsh/functions/Completion/Unix
/usr/share/zsh/functions/Completion/X
/usr/share/zsh/functions/Completion/Zsh
/usr/share/zsh/functions/Exceptions
/usr/share/zsh/functions/MIME
/usr/share/zsh/functions/Misc
/usr/share/zsh/functions/Newuser
/usr/share/zsh/functions/Prompts
/usr/share/zsh/functions/TCP
/usr/share/zsh/functions/VCS_Info
/usr/share/zsh/functions/VCS_Info/Backends
/usr/share/zsh/functions/Zftp
/usr/share/zsh/functions/Zle

Como faço para que o script acesse o caminho do usuário em vez do sistema?

    
por wting 23.12.2011 / 20:28

1 resposta

2

Você não pode fazer isso, porque o fpath do usuário não é definido por uma atribuição simples em um arquivo de configuração de valor-chave, ele é definido por um script potencialmente complexo. Por exemplo, meu fpath difere dependendo da versão do zsh e de quais diretórios existem no sistema. Você pode obter o ~/.zshrc do usuário, mas isso pode fazer todos os tipos de outras coisas (e, em particular, pode não funcionar se o zsh não estiver em execução em um terminal e puder imprimir coisas e assumir que o shell é interativo). / p>

Todas as instâncias de zsh source ~/.zshenv , portanto, sugiram ao usuário que definam seu fpath de lá.

    
por 24.12.2011 / 17:18