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

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

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

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Linux

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

sh

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

Q&A

解決済

2回答

1824閲覧

CentOS7にPython3.5.2をシェルスクリプトでインストール

suvera

総合スコア106

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Linux

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

sh

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

0グッド

0クリップ

投稿2016/08/29 06:48

編集2016/08/29 07:45

###前提・実現したいこと

Python3.5.2をCentOSにインストールするシェルスクリプトを作成したいです。
直前で作成しているはずの.bash_profileが無いと言われてこの問題が解決せず足踏みしています。

###発生している問題・エラーメッセージ

Cloning into '/root/.pyenv'... remote: Counting objects: 13583, done. remote: Total 13583 (delta 0), reused 0 (delta 0), pack-reused 13583 Receiving objects: 100% (13583/13583), 2.40 MiB | 855.00 KiB/s, done. Resolving deltas: 100% (9468/9468), done. /pythoninst.sh: line 11: source: .bash_profile: file not found

###該当のソースコード

sh

1#!/bin/sh 2 3# python3 4yum -y install gcc zlib-devel bzip2 bzip2-devel readline readline-devel sqlite sqlite-devel openssl openssl-devel git 5git clone https://github.com/yyuu/pyenv.git ~/.pyenv 6touch .bash_profile 7echo '# pyenv' >> .bash_profile 8echo 'export PYENV_ROOT="$HOME/.pyenv"' >> .bash_profile 9echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> .bash_profile 10echo 'eval "$(pyenv init -)"' >> .bash_profile 11source .bash_profile 12pyenv install 3.5.2 13pyenv global 3.5.2 14pyenv rehash

###試したこと
処理終了後、vimコマンドでファイルを見に行ったところ、
内容も正常にファイルも存在していました。

この後手打ちでsource .bash_profile以下を実行していけば問題なく動作しました。

修正しました

行数があっていないものを貼ってしまい申し訳ありませんでした。

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

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

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

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

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

otn

2016/08/29 07:35 編集

行数が合いませんが?何か省略してませんか?
suvera

2016/08/29 07:46

すいませんでした。 `#!/bin/sh`辺りがコピーできていなかったようです。 念のため再度実行したものでエラーも貼り直しました。
guest

回答2

0

1行目が/bin/bashでなく、/bin/shのために、Bashはこのシェルスクリプトを「POSIXモード」で実行します。
POSIXモードだと、sourceコマンドは、ファイル名に/が含まれない場合は環境変数PATHからしか探されないので、source ./.bash_profileのように/を含める必要があります。
あるいは、1行目を#!/bin/bashにする。

そもそも、.bash_profileは全て~/.bash_profileとホームディレクトリを指定すべきですね。

反映されないとは知りませんでした。

反映はされます。sourceした結果の環境変数などはそのシェルスクリプトの範囲で反映され有効です。

投稿2016/08/29 09:09

otn

総合スコア84423

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

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

0

ベストアンサー

そもそもシェルスクリプトは現在の接続シェルとは独立して実行されるはずなので、シェルスクリプト中でsourceしても反映されないのでは。
.bash_profileに環境変数をわざわざ書き出すのをやめて、

bash

1source pythoninst.sh

とするようにした方が良いのでは。

投稿2016/08/29 07:53

kunai

総合スコア5405

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

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

suvera

2016/08/29 08:23 編集

反映されないとは知りませんでした。 危うくハマってしまうところでした。本当に有難うございます! 以下のようにスクリプトを変更した後、`source`で実行したところうまくいきました! ありがとうございました! ``` #!/bin/sh # python3 yum -y install gcc zlib-devel bzip2 bzip2-devel readline readline-devel sqlite sqlite-devel openssl openssl-devel git git clone https://github.com/yyuu/pyenv.git ~/.pyenv export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init -)" source pythoninst.sh pyenv install 3.5.2 pyenv global 3.5.2 pyenv rehash ```
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問