以下はdirenv使用時にbashでよく使うコマンドです。
eval "$(direnv hook bash)" exec $SHELL -l
これをシェルスクリプトの中で実行す方法ってお分かりでしょうか?
上記コマンドだけたたくと以下のエラーになります。
/run_sh.sh: 5: eval: [[: not found /run_sh.sh: 10: exec: -l: not found
execはシェルスクリプトの中で要らないと思い外したら
/run_sh.sh: 12: /run_sh.sh: -l: not found
というエラーに遭遇しました。
shell上では$SHELLが見えないのですか?
とりあえず/bin/bash -lだけだと実行はできました。
次は
eval "$(direnv hook bash)"
コマンドです。
direnv hook bashを実行すると
_direnv_hook() { eval "$(direnv export bash)"; }; if ! [[ "$PROMPT_COMMAND" =~ _direnv_hook ]]; then PROMPT_COMMAND="_direnv_hook;$PROMPT_COMMAND"; fi
というのが出ました。この中でなぜかshell上では
if文の書き方が認識できないようです。それで
/run_sh.sh: 5: eval: [[: not found
というエラーが出たのかと思います。
とりあえず実行するには
vim test.sh eval "$(direnv export bash)"; /bin/bash -l
sh test.sh
で実行できましたが、
ほかにシェルスクリプトの中で簡単にdirenvを実行できる方法があれば教えていただきたいです。