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

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

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

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

6724閲覧

ubuntu18.04で.profileがログイン時に読み込まれない

take_piyo

総合スコア4

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/03/01 12:14

前提・実現したいこと

ubuntu18.04でGUIログインした際に自動で.profileが読み込まれてほしい

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

homeディレクトリに

  • .bash_profile
  • .bash_login

が存在しないのにもかかわらず.profileが読み込まれない

.profileが読み込まれないのでpyenv virtualenv のパスが通っていないのが原因であると思われるが、
pyenv activate hogeを実行すると下記のエラーメッセージが表示される

Failed to activate virtualenv.

Perhaps pyenv-virtualenv has not been loaded into your shell properly.
Please restart current shell and try again.

しかしsource .profileを実行した端末のみではpyenv activate hogeがちゃんと動作することを確認しています

該当のソースコード

.profileの内容

# ~/.profile: executed by the command interpreter for login shells. # This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login # exists. # see /usr/share/doc/bash/examples/startup-files for examples. # the files are located in the bash-doc package. # the default umask is set in /etc/profile; for setting the umask # for ssh logins, install and configure the libpam-umask package. #umask 022 # if running bash if [ -n "$BASH_VERSION" ]; then # include .bashrc if it exists if [ -f "$HOME/.bashrc" ]; then . "$HOME/.bashrc" fi fi # set PATH so it includes user's private bin if it exists if [ -d "$HOME/bin" ] ; then PATH="$HOME/bin:$PATH" fi # set PATH so it includes user's private bin if it exists if [ -d "$HOME/.local/bin" ] ; then PATH="$HOME/.local/bin:$PATH" fi export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" if command -v pyenv 1>/dev/null 2>&1; then eval "$(pyenv init -)" fi eval "$(pyenv virtualenv-init -)"

試したこと

mv .profile .bash_profile
を実行し再起動したがだめだった

補足

homeディレクトリで実行したコマンドとその出力
ls -al | grep "bash"
.bash_history
.bash_logout
.bashrc
ls -al | grep "profile"
.profile

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

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

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

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

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

guest

回答1

0

可能性としてあり得るのは、
・ログインシェルがbashでない
・bashがログインシェルとして実行されていない
・ホームディレクトリが違う
・読み込まれているが、エラーで中断した
などですが、どれも、関係なさそうに思います。

sourceでエラーになってないので、大丈夫だと思いますが、念のため、.profileを以下の1行だけにしてログインしなおしてみてください。
ps x > /tmp/profilelog
ファイルは作られますか?

また、sshdの設定をしてsshdが起動している場合は、ssh localhostで、.profileが実行されるかどうか(上記、/tmp/profilelogが書き込まれるか)?

投稿2020/03/01 13:24

otn

総合スコア84498

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

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

take_piyo

2020/03/03 17:17

ご指示の通り.profileを一行のみにしてログインしなおしたところ、profilelogファイルが作成されました。 ssh localhost コマンドを実行した場合も、profilelogファイルが作成されました。ssh localhost実行した場合はpyenv activate hoge が実行できました。exit コマンドでログアウトしたあとはpyenv activate hogeが実行できませんでした。 source .profile や ssh localhost を実行しなくてもvirtualenvのパスが通るようにするのはどこを修正したらいいですか? よろしくお願いします。
otn

2020/03/03 21:46

> .profileを一行のみにしてログインしなおしたところ、profilelogファイルが作成されました。 ということは、 ・読み込まれているが、エラーで中断した ということですね。 全文を載せてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問