Run script on shell login for all users

10,279

You could save your script in /etc/profile.d/als.sh. According to Ubuntu EnvironmentVariables manual:

Files with the .sh extension in the /etc/profile.d directory get executed whenever a bash login shell is entered (e.g. when logging in from the console or over ssh), as well as by the DisplayManager when the desktop session loads.

You should also modify relative path with absolute path:

 cat /home/$USER/.bashrc | egrep 'alias.+\=' | tr -s [:space:] | sed 's_^ alias_alias_' | sed 's_alias__' | sort | sed 's_=_\t\t_' | sed 's_^ __'  

And this should works for all users.

Share:
10,279
user38537
Author by

user38537

Updated on September 18, 2022

Comments

  • user38537
    user38537 over 1 year

    I have a script named "als" that parses the aliases in a user's .bashrc file that I'd like to run for any user logging in via SSH.

    This should display similar to a Message of the day (MOTD) banner. MOTD banners are static data though.

    Here's the code.

    #!/bin/bash
    echo
    echo Your aliases:
    echo \(from ~/.bashrc\)
    echo
    cat .bashrc | egrep 'alias.+\=' | tr -s [:space:] | sed 's_^ alias_alias_' | sed 's_alias__' | sort | sed 's_=_\t\t_' | sed 's_^ __'
    

    It works if I append ./als to my ~/.profile file, but this only executes for me. Again, I'd like this to run for all users on shell login

  • user38537
    user38537 over 9 years
    This does work. Thank you. That's exactly what I was after. I was going to nail down the absolute path when I found out how to run for all shell logins.
  • R. Karlus
    R. Karlus almost 5 years
    It worked for every logged user except root. How can I do this for the root user?
  • Lety
    Lety almost 5 years
    @Rhuan Karlus do you mean when you run commands with sudo? In this case, you shoud read "sudo caveat" paragraph in the link posted above
  • R. Karlus
    R. Karlus almost 5 years
    That's exactly what I needed @Lety !! Thank you very much.