ubuntuで.bash_profileが見つかりません


67

.bash_profileUbuntu 14.04の/home/userディレクトリに見つかりません。ls -aコマンドを使用してを表示しましたが.bash_profile、そのようなファイルはありません。


1
~/.profile代わりに使用する必要があります。
ムル14


1
構成ファイル(またはディレクトリ)が欠落していることはよくあります。その場合、それらを読み取る必要があるソフトウェアは、デフォルトの構成を使用するか、他のソースを読み取って構成を取得します。存在しない構成ファイルを変更する場合は、最初に作成するだけです。
バクリウ14

回答:


84

Ubuntuはを使用し~/.profileます。

.bash_profileUbuntuで作成できますが、.profile読み込まれません。

.profileコンテンツを読む場合:

cat ~/.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.

そのため、~/.profile代わりに~/.bash_profile


.profileは機能しませんでした。vim ~/.bashrcその後、.bashrcを編集しなければなりませんでした . ~/.bashrc
Nahid

.bash_profileの使用はUbuntuでは機能しません。BashではなくDashをGUIログインシェルとして使用するため、bash_profileは読み込まれません。
ジョナサンハートリー

.profileを編集する場合、ログアウトしてから再度ログインして変更を確認する必要があります。
ジョナサンハートリー

8

ログインシェルを呼び出すと、bashは次の順序で構成ファイルを探します。

[0] ~/.bash_profile
[1] ~/.bash_login
[2] ~/.profile

そこにあるかのように、最初のものを見つけたら、それは他の人を探して停止し.bash_profile、私の中に$HOMEbashが探していないだろう.bash_loginし、.profileもう。

これらの3つのファイル名から、Ubuntuはデフォルトで.profile名前を変更でき.bash_profileます:

mv ~/.profile ~/.bash_profile

私たちが使用して新しいbashシェルを開くと今bash -lsu - $USERsudo -u $USER -iまたはログインシェルとしてbashのを実行している他のコマンド、~/.bash_profile発信されます。

重要な注意事項:

これまで説明してきたことは、Bash自体にのみ適用されます。GUIからシステムにログインする場合、ディスプレイマネージャーは正しいファイルを取得する責任があります。

Ubuntuはgdm3ディスプレイマネージャーとして使用します。見てみると、次の場合を/etc/gdm3/Xsession除き、どのファイルもソースされないことがわかります.profile

# First read /etc/profile and .profile
for file in /etc/profile "$HOME/.profile"; do
  if [ -f "$file" ]; then
    source_with_error_check "$file"
  fi
done

したがって、GUIを使用してログインしている場合は、ファイルを.profile名前の下に保存してください。そうしないと、環境内の変数や設定が一部失われる可能性があります。

より良いオプションは、次へのシンボリックリンクを作成すること.profileです。

ln -s ~/.profile ~/.bash_profile

これで、データはに存在し.profilegdm何も見逃すことなく、.bash_profile実際にbashがロード.profileされ、それぞれを編集することで同じ結果が得られます。

.profileが見つかりませんか?

まだお持ちでない場合は.profile、ここからコピーを入手してください:

cp /etc/skel/.profile ~/.profile

または

# Remember the note above
cp /etc/skel/.profile ~/.bash_profile

しかし、Bashが最初に〜/ .bash_profileを探している場合、Ubuntuでこれを行わないのはなぜですか?UbuntuはBashを変更しましたか?これは奇妙に思えます。man bashUbuntuでは、.bash_profileを最初に検索する方法について説明しています。
ジョナサンハートリー

それは探し.bash_profile まず、それはそれを見つけることができません(それが存在しないため)ため、その後に見える.bash_login再びそれを見つけることができません(Ubuntuのは、これら2人の名前を使用していないため)finalyそれが探し.profileはいそこにそれがあります。.bash_profilein を作成した場合、~ubuntuを上書きします~/.profile。これはbashのデフォルトの動作で、ここでは何も変更されていません。
ラヴェクシーナ

そうです、私も最初はそう思っていました!そして、あなたが説明することはRHELで起こります。しかし、Ubuntuではそうではありません。を作成すると.bash_profile、読み取られません。これは、UbuntuがGUIログインシェルとして「Bash」を使用しなくなったためだと気付きました。代わりに「ダッシュ」を使用します。私が考えるこれを約18.04以来、真となっています。
ジョナサンハートリー

ここにポイントがありません。実際、bash自体について話しているのですが、ここで言っているのは、Ubuntuが「.profile」を作成し、他のものは作成しないということです。どのディストリビューションを使用しているかは関係ありません。:)
ラヴェクシーナ

あなたの答えが示唆するように、読者が.profileを.bash_profileに名前変更すると、Ubuntuの人々にとって、そのファイルはログイン時や端末を開いたときに読み込まれません。あなたは彼らのシステムを破壊しました。ファイルが読み取られる唯一の方法は、「-login」引数を使用してbashセッションを起動し、明示的にログインシェルにすることです。デスクトップ上で自動的に発生することはありません。
ジョナサンハートリー

5

つまり、ファイルは存在しません。ただし、ログインシェルとして呼び出されたbash場合bashは、ファイルを作成し、ファイルを実行/ソースできます。そのため、常にシェル経由でログインします(たとえば、ssh)。

ターミナルを開くたびにコンテンツを実行する場合は、.bashrc代わりにファイルを変更する必要があります。


.bash_profileファイルが欠落している理由を理解できますか?
Roledenez

/etc/skel/ディレクトリからコピーできます。
Frantique

これは、標準的なデザインです。しかし、それはできないという意味ではありません。
カオス

私は、.bash_profile他の回答に関するコメントで、Ubuntuに理由がない(および機能しない)と説明しました。
ジョナサンハートリー

2

~/.profile代わりに使用するためのトップアンサー~/.bash_profileは私にとってうまくいきませんでした。

修正.bashrc作業

ただ:

vim ~/.bashrc

注:Ubuntu WSLを使用しています。


純正のLinuxでは、GUIにログインするとき、リモートで接続するとき、またはコンソールにログインするとき、つまりctrl + shift + F2を押した後に.profileが適用されます。これは、マシンにログインした最初の時間を表し、その後作成する他のすべてのプロセスの親であるシェルを作成することになっています。WSLにはこのようなものはないので、.profileが読み取られない可能性があります。
ジョナサンハートリー

わたしも。~/.profileただのUbuntu 18.04では、デフォルトでロードされていない
javapowered

0

.bashrcを意味する場合は、ホームフォルダーにあります。存在しない場合は、/ etc / skelフォルダーからホームフォルダーにコピーできます。

このテーマに関する詳細情報が必要な場合は、ステファンリッペンのページをご覧ください。

http://stefaanlippens.net/bashrc_and_others

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.