Question: I have ~/.bash\_profile which I would like to be invoked every single time a new GNU screen is created so that all my aliases work in GNU screen as they work in terminal.

At this time this is what my ~/.screenrc looks like.

```
hardstatus on
hardstatus alwayslastline
hardstatus string "%{.bW}%-w%{.rW}%n %t%{-}%+w %=%{..G} %H %{..Y} %m/%d %C%a "

```

Answer: 
`shell -$SHELL`

Add the above line to your `~/.screenrc`, this will make screen start-up using a login shell which will load your `~/.bash_profile`.
Debian and Ubuntu (at least), in their standard configuration, have a **/etc/profile.d/** directory from which any containing file ending by **.sh** are sourced by **/etc/profile**.

This is very practical for adding configurations, but makes users thinking this is the proper place for dropping their new settings, whereas this is not always true.

I don't understand why they didn't do the same for **/etc/bash.bashrc**, I hope they will do it in some future, but in the meantime, I did it myself:

1. Create a new directory at **/etc/bash.bashrc.d/**
2. Similarly to what exists in **/etc/profile**, add the following lines at the end of **/etc/bash.bashrc**:

```
if test -d /etc/bash.bashrc.d/; then
    for bashrc in /etc/bash.bashrc.d/*.sh; do
        test -r "$bashrc" && . "$bashrc"
    done
    unset bashrc
fi

```
3. Starting from now, drop files needed for non-interactive shells in **/etc/bash.bashrc.d/** rather than in **/etc/profile.d/**.

That way, the only change needed to existing files is at the end of **/etc/bash.bashrc**.

I think this is the main reasons for users complaining about their profile not loaded, but actually their profile may not **NEED** to be loaded.

Maybe you could read **[this](https://askubuntu.com/questions/247738/why-is-etc-profile-not-invoked-for-non-login-shells)** about this subject.