プロが教える店舗&オフィスのセキュリティ対策術

ログインシェルが /bin/bash で、~/.bash_profile ~/.profileが存在している環境で、ログインすると ~/.profileが読み込まれています。~/bash_loginはありません。
自分としては、ログインシェルが /bin/bashで、~/.bash_profileと~/.profileが存在していれば、~/.bash_profileだけが読み込まれるべきと思うのですが、下記の状況でなぜ ~/.profileが読み込まれるのか、わかりませんでしょうか?

$ cat /etc/passwd | grep ${USER} | cut -d: -f7
/bin/bash


$ cat ~/.bash_profile
#########################################
# originally written by OS
[[ -f ~/.bashrc ]] && . ~/.bashrc

# my test
touch ${HOME}/tmp/bash_profile-made-this.file
#########################################


$ cat ~/.profile
#########################################
# originally written by OS
SOME VARIABLES ARE SET.

# my test
touch ${HOME}/tmp/profile-made-this.file
#########################################


(再ログイン後に)
$ ls ~/tmp/
profile-made-this.file

質問者からの補足コメント

  • どう思う?

    今、2021年5月1日17時22分です。
    先ほどPCを起動し、Arch系のManjaro Linuxが起動され、Lightdmのログイン画面からログインし、Xfceデスクトップ環境となりました。
    ターミナルソフトを起動し、"ls -s ~/tmp/"とすると、下記となっています。

    $ ls -l ~/tmp/
    合計 0
    -rw-r--r-- 1 user group 0 5月 1 17:20 profile-made-this.file

    No.1の回答に寄せられた補足コメントです。 補足日時:2021/05/01 17:32
  • うれしい

    artoo様、ありがとうございます。
    補足の文字数制限により、分割して報告します。
    「通常のPC起動でデスクトップ環境に入る時は~/.profileだけが読み込まれ、デスクトップ環境を起動しないログインの時は~/.bash_profileが読み込まれる」と理解しました。

    $ ps axfww | less
    2158 ? SLsl 0:00 /usr/bin/lightdm
    2170 tty7 Ssl+ 0:04 \_ /usr/lib/Xorg :0 -seat seat0 -auth /run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch
    3047 ? Sl 0:00 \_ lightdm --session-child 12 19
    以下、省略

    No.2の回答に寄せられた補足コメントです。 補足日時:2021/05/02 08:35
  • うれしい

    $ ps ax | grep profile | grep -v grep
    なにも出力されない。


    5月2日7時42分頃に、Android端末からWake On LanにてPCを起動し、sshにてAndroid端末からログインした。
    前記でAndroid端末から起動されたPCに、5月2日7時56分頃に、Lightdmから通常のログインした。

    $ ls -l ~/tmp/
    合計 0
    -rw------- 1 user group 0 5月 2 07:42 bash_profile-made-this.file
    -rw-r--r-- 1 user group 0 5月 2 07:56 profile-made-this.file

      補足日時:2021/05/02 08:38
  • うれしい

    5月2日8時8分頃に、Alt+F2でコンソール画面としてログインした。

    $ ls -l ~/tmp/
    合計 0
    -rw------- 1 user group 0 5月 2 08:08 bash_profile-made-this.file
    -rw-r--r-- 1 user group 0 5月 2 07:56 profile-made-this.file

      補足日時:2021/05/02 08:39
  • うれしい

    5月2日8時41分頃、Android端末からWake On LanにてPCを起動し、sshにてAndroid端末からログインし、Android端末から "$ ls -l ~/tmp/"を実行した出力

    $ ls -l ~/tmp/
    合計 0
    -rw------- 1 user group 0 5月 2 08:41 bash_profile-made-this.file
    -rw-r--r-- 1 user group 0 5月 2 07:56 profile-made-this.file

    umaskは ~/.bashrcで 0077にしています。
    ~/.bashrcは~/.bash_profile内で読み込まれる設定となっています。

      補足日時:2021/05/02 08:47
  • どう思う?

    補足の文字数制限のため出力を掲載できませんが、"ps axfww"で表示される/usr/bin/lightdmの子プロセスにbashが表示された行は無いです。

    psコマンドでのbash関連行は次のものですが、"ps axfww"を実行するためにデスクトップ上でターミナルを開いた時のbashと思います。
    2147 ? Sl 0:06 /usr/bin/xfce4-terminal
    2153 pts/0 Ss 0:00 \_ bash
    2370 pts/0 R+ 0:00 \_ ps axfww

    "$ ps ax | grep profile | grep -v grep"は「~/.bash_profileや~/.profileの痕跡がないか」と思ってやってみましたが、確かに無意味でした。

    No.3の回答に寄せられた補足コメントです。 補足日時:2021/05/02 12:47

A 回答 (3件)

profile-made-this.file の更新時刻は、ログインした時刻ですか?



どうやってログインしていますか?
この回答への補足あり
    • good
    • 0

Lightdmが、そういうbashの起動をしているのでしょう。



ps axfww で、Lightdmからどのようにbashが起動されているか分かります。

ALT + F2 が効くならそのコンソール画面で、
ALT+F2でコンソールが切り替わらないなら、sudo init 3 でGUIをオフにしてコンソールから直接ログインすると、bashの仕様通りになると思います。
この回答への補足あり
    • good
    • 0

lightdmを介さずログインした場合は、.bash_profileだけが実行されたことが確認できたと思います。



> $ ps axfww | less
> 2158 ? SLsl 0:00 /usr/bin/lightdm

それらの子プロセスのbashの行を見ましょう。

> $ ps ax | grep profile | grep -v grep
> なにも出力されない。

これは全く無意味なコマンドだと思いますが、何目的ですかね??
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!