[git commit] ash: read $HOME/.profile instead of $(pwd)/.profile

Denys Vlasenko vda.linux at googlemail.com
Fri Mar 15 01:45:50 UTC 2013


commit: http://git.busybox.net/busybox/commit/?id=4ef1439c593daadeffb3f00eaaf49e190a3039e1
branch: http://git.busybox.net/busybox/commit/?id=refs/heads/master

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 at the2masters.de>
Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 shell/ash.c |   11 +++++++++--
 1 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/shell/ash.c b/shell/ash.c
index 5f09fd4..fbbdb06 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -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);


More information about the busybox-cvs mailing list