LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - Software (https://www.linuxquestions.org/questions/linux-software-2/)
-   -   Aliases got lost (https://www.linuxquestions.org/questions/linux-software-2/aliases-got-lost-724742/)

surya_prakash 05-08-2009 03:00 PM

Aliases got lost
 
Hi,

I logged into my linux system with a limited user and entered the root using " su " command in the terminal. Then i added some aliases from the root login.then i logged out from root.and again i acquired the root login using "su " command .when i type the alias command it is not showing the previously added aliases.

MensaWater 05-08-2009 03:04 PM

When you add an alias it is in the current shell. To add it automatically next time you become the user you need to add it to that user's startup files ($HOME/.bashrc and/or $HOME/.bashprofile assuming you're using bash shell).

Also note that when you do "su root" (or just "su" since root is default user) you are NOT invoking the environment of the root user. You must type "su - root" or "su -" to invoke that environment. Otherwise it is using the environment it had before the switch to root.

colucix 05-08-2009 03:05 PM

Where did you put your aliases definition? If you simply write them on the command line, they are local to the current shell and are lost when you terminate the session. If you put them in a file which is sourced every time you login, as $HOME/.bashrc, you retrieve your aliases (or functions).

surya_prakash 05-08-2009 03:09 PM

thanks

yes,if i add aliases by logging as "su - root". I only see aliases when login as "su - root".If i login as "su " i could not see any .


why

surya_prakash 05-08-2009 03:11 PM

there is nothing like .bashrc file in HOME. I could only find .bash_history

colucix 05-08-2009 03:20 PM

Quote:

Originally Posted by surya_prakash (Post 3534929)
thanks

yes,if i add aliases by logging as "su - root". I only see aliases when login as "su - root".If i login as "su " i could not see any .


why

As jlightner already said, when you switch to root using su without the hyphen, you keep the environment of the current user. When you use su - you switch to root starting a login session. In this way all the files are sourced at login (.bash_profile, .bashrc and so on) and the root's environment is set up.

Quote:

Originally Posted by surya_prakash (Post 3534929)
there is nothing like .bashrc file in HOME. I could only find .bash_history

.bashrc is not mandatory, but you can always create it if necessary. If it misses, most likely you don't use /bin/bash as login shell. Anyway, you didn't replay to my previous question: where did you put the aliases? If not in the missing .bashrc, to which file have you added them?

MensaWater 05-08-2009 03:23 PM

$HOME not just "HOME".

$HOME is the home directory of the user. This could be something like:
/
/root
/home/root
/billybob

It is whatever was defined as the user's home directory in /etc/passwd. You can find out what it is by doing the "su -" then typing "echo $HOME".

If there is no .bashrc in root's $HOME you can create it. Of course this also assumes the shell for root is bash. If it were zsh or ksh you might need a different file. The last thing for root user in /etc/passwd is the shell it uses.

surya_prakash 05-08-2009 03:37 PM

yes i create .bashrc file in $HOME and added the aliases. I could able to find the alias even if login into root as "su ".

Thanks


And one more doubt is

Currently i logged into a user prakash the terminal prompt is showing as prakash@prakash.domain.name]$

if i logged in as root previosly it showed like

root@prakash.domain.name]#

But now if i logged in as root it is showing like

bash-3.1#

Why is it happening so?

chrism01 05-10-2009 09:34 PM

That's the 'normal' basic root prompt (especially the '#') to show you are root.
You can customise it by looking at the contents of /etc/profile, /etc/bashrc, looking for the word 'PROMPT' and editing the user's .bashrc as needed.


All times are GMT -5. The time now is 11:06 AM.