ash: read $HOME/.profile instead of $(pwd)/.profile
authorStefan Hellermann <stefan@the2masters.de>
Fri, 15 Mar 2013 01:45:50 +0000 (02:45 +0100)
committerDenys Vlasenko <vda.linux@googlemail.com>
Fri, 15 Mar 2013 01:45:50 +0000 (02:45 +0100)
ash --login should read ~/.profile instead of .profile in the current
directory. I noticed it while trying to figure out why /root/.profile
is only read sometimes.

function                                             old     new   delta
ash_main                                            1374    1398     +24

Signed-off-by: Stefan Hellermann <stefan@the2masters.de>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
shell/ash.c

index 5f09fd47438bb9fdcc4b4cdfef8c96d8ab3a3126..fbbdb06b00a6b9d7f3e97b61ccabae199ac18c2e 100644 (file)
@@ -13194,11 +13194,18 @@ int ash_main(int argc UNUSED_PARAM, char **argv)
        if (argv[0] && argv[0][0] == '-')
                isloginsh = 1;
        if (isloginsh) {
+               const char *hp;
+
                state = 1;
                read_profile("/etc/profile");
  state1:
                state = 2;
-               read_profile(".profile");
+               hp = lookupvar("HOME");
+               if (hp) {
+                       hp = concat_path_file(hp, ".profile");
+                       read_profile(hp);
+                       free((char*)hp);
+               }
        }
  state2:
        state = 3;
@@ -13232,7 +13239,7 @@ int ash_main(int argc UNUSED_PARAM, char **argv)
                        const char *hp = lookupvar("HISTFILE");
                        if (!hp) {
                                hp = lookupvar("HOME");
-                               if(hp) {
+                               if (hp) {
                                        hp = concat_path_file(hp, ".ash_history");
                                        setvar("HISTFILE", hp, 0);
                                        free((char*)hp);