Linux的 – 如何判断哪些文件来源login?

当一个特定的用户login到一台Linux机器上时,某些文件可能来源于,例如.bashrc,.bash_profile等。有时,不同的shell意味着不同的文件来源。 当然用户可能有一些设置来源自己的某些自定义文件。

我的问题:有没有一种方法让root / su确定每个给定用户login的文件的列表?

inotifywatch可能会有所帮助。 打包inotify工具。 用作家庭目录的文件/目录的用户,而不是sudo,否则,如果运行更新的gnome,则会在.gvfs上发生错误。

inotify只会告诉你哪些文件被访问/创build/修改/删除。

$ inotifywatch -r /home/username/.* /home/username/* Establishing watches... 

在另一个terminal

 $ cat /home/username/.bashrc 

inotifywatchterminalctrl-c结束

 Finished establishing watches, now collecting statistics. total access modify close_nowrite open filename 3 1 0 1 1 /home/username/.bashrc 

对于您的具体请求,在login期间访问的所有文件。

 $ inotifywatch -r /home/username/.* /home/username/* Establishing watches... 

在另一个terminal

 $ sudo su # login username 

inotifywatchterminalctrl-c结束

如果使用象gnome或kde这样的胖桌面,你可能想将inotifywatchredirect到一个文件。 或者增加inotifywatchterminal的回滚。 在gnome 3中,login过程中访问了数千个homedir文件。 您可能要排除目录或制作特定的目录/文件列表来观看。

其中一种方法,效率不高,就是启动电脑,让用户login。 然后用noatime挂载驱动器,以便访问时间不再更新,然后使用find命令转储在用户login的时间段内访问的文件列表。

您可以将其他代码添加到每个点文件中,例如:

的.bashrc

 if [ ! -z "$PS1" ]; then # Determine whether Bash is running interactively or not. echo $(basename $BASH_SOURCE) loaded. fi 

.bash_profile.bash_aliases.profile等类似。

所以当你login时,你会看到哪些文件被加载,什么是确切的顺序。 如果您不想在屏幕上打印任何内容(例如用户),请将其login到文件中。 例如:

 echo # $(basename $BASH_SOURCE) loaded for $USER. >> ~/.bash_history 

你可以检查我的点文件中的上述解决scheme。