aterm -e screen does not source .bashrc

Giorgos Keramidas keramida at ceid.upatras.gr
Tue Jul 11 14:48:09 UTC 2006


On 2006-07-11 15:33, Alex Zbyslaw <xfb52 at dial.pipex.com> wrote:
>Giorgos Keramidas wrote:
>> By default, xterm, rxvt, aterm and various other terminal emulators
>> start non-login shells.  This means that .profile is not sourced by the
>> shell spawned by the terminal.  You can enable a `login shell' inside
>> one of these terminal emulators with the -ls option:
>>
>> 	aterm -ls -e screen &
>
> But a better option, IMHO,  is to correctly separate the functionality in
> your .profile from that in some other (e.g. .shinit) file.  One is for
> only stuff that happens at login, one for stuff that happens regardless.

Yes, of course :-)

> from man sh
>
>     When first starting, the shell inspects argument 0, and if
>     it begins with a dash (-), the shell is also considered a
>     login shell.  This is normally done automatically by the
>     system when the user first logs in.  A login shell first
>     reads commands from the files /etc/profile and then
>     .profile if they exist.  If the environment variable ENV is
>     set on entry to a shell, or is set in the .profile of a
>     login shell, the shell then reads commands from the file
>     named in ENV.  Therefore, a user should place commands that
>     are to be executed only at login time in the .profile file,
>     and commands that are executed for every shell inside the
>     ENV file.  The user can set the ENV variable to some file
>     by placing the following line in the file .profile in the
>     home directory, substituting for .shinit the filename
>     desired:
>
>         ENV=$HOME/.shinit; export ENV
>
> IMHO, this one one of the ways that csh was miles ahead of sh as a login
> (as opposed to a scripting) shell.  These days, of course, a modern shell
> like bash has many of the best features of both, and even sh can
> (finally) do command line editing.

Agreed.  My current .bash_profile is basically a minimal wrapper around
.bashrc these days:

% gothmog % cat -n .bash_profile
%      1  # Startup file for login instances of the bash(1) shell.
%      2  # $RCS: giorgos/.bash_profile,v 1.10 2005/07/10 21:10:39 giorgos Exp $
%      3
%      4  # First of all, run a .bashrc file if it exists.
%      5  test -f ~/.bashrc && . ~/.bashrc
%      6
%      7  # The following section should be pretty minimal, if present at all.
%      8  mesg y >/dev/null 2>&1
%      9  /usr/bin/true
% gothmog %


More information about the freebsd-questions mailing list