
サーバーをDebian 8から9にアップグレードした後、bashで奇妙な動作が発生しました。 SSH経由でログインすると、設定ファイルはロードされず、次のメッセージが表示されます。
Linux myserver 4.9.0-7-amd64 #1 SMP Debian 4.9.110-1 (2018-07-05) x86_64
Last login: Mon Jul 16 22:37:12 2018 from x.x.x.x
-bash-4.4$
return -bashを実行しますecho $0
。呼び出された時点を確認するために、/etc/profile、~/.bashrcに1行を入れましecho "sourcing ..."
たが、その行はまったく表示されません。ただし、ファイルを手動でインポートするとテキストが表示され、ファイルは正常にインポートされます。
使用追跡(ここで発見)どのファイルが開いているかを確認するには、すべてのプロファイルが開いていることを確認できます。
echo exit | strace bash -li |& less | grep '^open'
次の結果が表示されます。
...
open("/etc/profile", O_RDONLY) = 3
open("/etc/bash.bashrc", O_RDONLY) = 3
open("/etc/profile.d/", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 3
open("/etc/profile.d/bash_completion.sh", O_RDONLY) = 3
...
open("/home/myuser/.bash_profile", O_RDONLY) = 3
open("/home/myuser/.bash_history", O_RDONLY) = 3
open("/home/myuser/.bash_history", O_RDONLY) = 3
...
open("/home/myuser/.bash_logout", O_RDONLY) = 3
open("/etc/bash.bash_logout", O_RDONLY) = -1 ENOENT (No such file or directory)
...
この問題は、一般ユーザーとしてログインした場合にのみ発生します。 rootに設定すると、設定ファイルが正常にロードされます。今はルートだけがこのファイルにアクセスできると思います。しかし、私が確認したすべてがそうする必要があるので、私自身が狂っています。
どんなヒントやアイデアにも感謝します。