78372


本に従って技術ブログを作っていて、direnvを利用したいんですが、思うように動きません>< ご回答お待ちしています！

## 環境

  * macos
  * vscode
  * shellはzsh
  * direnv

.envrc の中身

[code]

    export DSN="workuser:Passw0rd!@tcp(127.0.0.1:3306)/techblog?parseTime=true&autocommit=0&sql_mode=%27TRADITIONAL,NO_AUTO_VALUE_ON_ZERO,ONLY_FULL_GROUP_BY%27"
    
[/code]

## やりたい処理

[code]

    $ direnv allow
    
[/code]

欲しい結果  
direnv: loading .envrc  
direnv: export +DSN

[code]

    $ echo $DSN
    
[/code]

欲しい結果  
workuser:Passw0rd!@tcp(127.0.0.1:3306)/techblog?parseTime=true&autocommit=0&sql_mode=%27TRADITIONAL,NO_AUTO_VALUE_ON_ZERO,ONLY_FULL_GROUP_BY%27

## 現実

反応なし、echoも空白を返す

[code]

    $ direnv allow
    $ echo $DSN
    
    
[/code]

## 試した事

macOSのデフォルトシェルがbashからzshに変更したようなので

[code]

    % cat ~/.bash_profile >> ~/.zshrc
    % code ~/.zshrc
    
[/code]

して、  
eval "$(direnv hook bash)"  
↓  
eval "$(direnv hook zsh)"

に変更しました。それでも解決しません...  
初歩的な質問かもしれないですが、答えてくださると幸いです!

### 追記

#### セットアップ

[code]

    $ brew instal direnv
    
[/code]

でインストールした後

[code]

    $ echo 'eval "$(direnv hook bash)"' >> ~/.bash_profile
    
[/code]

.bash_profile に設定の追記して

[code]

    $ exec $SHELL -l
    
[/code]

設定の反映

してから利用しています。

#### .zshrcの中身

[code]

    export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"←この一行余計だと思いvim上で消しました
    eval"$(direnv hook zsh)"
    export PATH=$HOME/go/bin:$PATH
    export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"
    export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"
    
[/code]

### 追記2 ← 消えました

今朝ターミナルを開いたら先頭に変な表示が出ていました。下記の通り

[code]

    /Users/ユーザー名/.zshrc:1: no such file or directory:
     eval\n_direnv_hook() {\n  trap -- '' SIGINT;\n  eval 
    "$("/usr/local/bin/direnv" export zsh)";\n  trap - 
    SIGINT;\n}\ntypeset -ag precmd_functions;\nif [[ -z 
    ${precmd_functions[(r)_direnv_hook]} ]]; then\n  precmd_functions=( 
    _direnv_hook ${precmd_functions[@]} )\nfi\ntypeset -ag 
    chpwd_functions;\nif [[ -z ${chpwd_functions[(r)_direnv_hook]} ]];
     then\n  chpwd_functions=( _direnv_hook ${chpwd_functions[@]} )\nfi
    
[/code]

私の知識不足で、すいませんが全く意味が分かりません(笑)  
無視してコマンドは普通に打てます。  
上記のエラーの調べ方とか簡単な事でもアドバイス頂けると嬉しいです。


CC BY-SA 4.0
2021-07-22T12:55:08.733
78363
2021-07-25T11:15:01.030
2021-07-25T11:15:01.030
15413
47398
question
macos go zsh
direnv を利用するため、環境変数を定義して echo したい


  * （現在は修正されていますが、もともと）質問文冒頭に「.zshrc の中身」として書かれていた内容は .envrc として書かれているべき内容です。
  * .zshrc で direnv hook のロードをする際に、`eval` の後にスペースが抜けています。いま `eval"$(direnv hook zsh)"` となっていますが `eval "$(direnv hook zsh)"` とすべきです。前者だとシェル展開された後の文字列まで含めたコマンド名だと解釈されます。


CC BY-SA 4.0
2021-07-23T05:05:27.400
78372
2021-07-23T08:53:04.480
2021-07-23T08:53:04.480
19110
19110
78363
answer