質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

sh

shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

Q&A

2回答

3368閲覧

シェルスクリプトの中でdirenvを実行する方法

Kimsehwa

総合スコア312

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

sh

shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

0グッド

0クリップ

投稿2016/08/19 03:00

編集2016/08/19 04:35

以下は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を実行できる方法があれば教えていただきたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

moonphase

2016/08/19 03:17

shell上で実行というのがよくわかりません。 上記の通りターミナル上で実行してもエラーは出ませんでした。 eval "$(direnv hook bash)" exec $SHELL -l
otn

2016/08/19 03:21

「shell上」というのは、「シェルスクリプト実行でなく、シェルのコマンドラインで」という意味ですか?
otn

2016/08/19 03:27

逆かな?
Kimsehwa

2016/08/19 04:33

すいません。シェルスクリプトでという意味でした sh test.sh eval "$(direnv hook bash)" exec $SHELL -l sh test.sh これ実行できるのでしょうか?
guest

回答2

0

eval "$(direnv hook bash)"なので、スクリプトをbashで実行して下さい。

投稿2016/08/19 13:07

otn

総合スコア84505

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

[[
てのは bash 固有の書き方で、shだと認識されません。

投稿2016/08/19 09:48

takasima20

総合スコア7458

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問