環境: Debian/jessie
shellscript
1#!/bin/bash 2 3# insatll pyenv 4echo '##### install pyenv #####' 5git clone https://github.com/yyuu/pyenv.git ~/.pyenv 6echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc 7echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc 8echo 'eval "$(pyenv init -)"' >> ~/.bashrc 9source ~/.bashrc 10echo '##### finish install #####'
上記のshellscriptを実行(実行方法: $ ~/pyenv-install.sh
)すると notfound source command
とは表示されずにpassされました。(エラーなし)
つまりsourceコマンドが認識されたと思っていたのですが、コンソール上で pyenv
コマンドが認識されていませんでした。sourceコマンドが認識されていたのにsourceコマンドが効いていない、という謎にハマっています。
ちなみに上記のshellscriptのpermissionは -rwxr-xr-x (755)
です。
また source ~/bashrc
すると pyenv
コマンドは認識されます。
お知恵をお貸しいただけますと幸いです。
備忘録:
シェルスクリプト内でsourceコマンドを使いたい
シェルが対話的でない時には、 shopt コマンドによって expand_aliases オプ
ションが設定されていない場合に限り、エイリアスの展開は行われません
類似質問を見つけましたが、そもそも shellscriptを実行しているシェル
と shellscriptが実行しているシェルは異なる
のでsourceコマンドは親のシェルに影響を与えない、との指摘を受けました。
備忘録として残しておきます。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/14 12:52