LinuxQuestions.org
Share your knowledge at the LQ Wiki.
Go Back   LinuxQuestions.org > Forums > Linux Forums > Linux - Distributions > Slackware
User Name
Password
Slackware This Forum is for the discussion of Slackware Linux.

Notices

Reply
 
Search this Thread
Old 05-04-2009, 01:12 PM   #1
MQMan
Member
 
Registered: Jan 2004
Location: Los Angeles
Distribution: Slack64 13.37
Posts: 535

Rep: Reputation: 36
aliases Lost When Using screen


Not sure if this is Slack related or not, but I thought I'd post here first.

The "vanilla" Slack 12.2 I'm using sets up 3 or 4 aliases when I log on, particularly the one to colourise ls.

When I start a "screen" session, it appears that my current profile is used by screen, with the exception of TERM=, which I think is normal.

However, all the aliases that are currently set, are gone. Is this normal.

Cheers.
 
Old 05-04-2009, 01:43 PM   #2
rg3
Member
 
Registered: Jul 2007
Distribution: Slackware Linux
Posts: 505

Rep: Reputation: Disabled
Yes. Aliases are particular to a given shell instance. They are not inherited when you launch a subshell. Screen launches a new shell and, probably not being a login shell, it doesn't have any of those aliases as the files that create them are not read when the shell is launched. Add a line like this one to your ~/.screenrc:

Code:
shell -$SHELL
 
Old 05-04-2009, 02:11 PM   #3
MQMan
Member
 
Registered: Jan 2004
Location: Los Angeles
Distribution: Slack64 13.37
Posts: 535

Original Poster
Rep: Reputation: 36
Quote:
Originally Posted by rg3 View Post
as the files that create them are not read when the shell is launched
True, because my "fortunes" aren't printed either.

Everything else that is set up by /etc/profile is in place though, which I'm guessing is because it's inherited from the "launching" shell. So, why not aliases as well.

BTW, that command made no difference, nor did -${SHELL}. I still don't have the aliases in screen.

Cheers.
 
Old 05-04-2009, 02:48 PM   #4
rg3
Member
 
Registered: Jul 2007
Distribution: Slackware Linux
Posts: 505

Rep: Reputation: Disabled
Does "shell -/bin/bash" make any difference?
 
Old 05-04-2009, 03:51 PM   #5
MQMan
Member
 
Registered: Jan 2004
Location: Los Angeles
Distribution: Slack64 13.37
Posts: 535

Original Poster
Rep: Reputation: 36
Nope.

Cheers.
 
Old 05-23-2009, 09:53 PM   #6
Andy Alkaline
Member
 
Registered: Jun 2004
Location: Minnesota, USA
Distribution: Slackware32-stable, Debian-wheezy-amd64, LFS 7.1
Posts: 351

Rep: Reputation: 27
Question aliases lost when using screen, not sourcing profile

Like the user who started this thread, I'm using Slackware 12.2 and have the same problem when I run screen. I have tried specifying the path to bash, as suggested above.

I've also tried specifying /bin/bash at the command line with the -s option (screen -s /bin/bash).

Once I'm in screen, I can add aliases to the environment from the command line, or manually source /etc/profile and that will give me my aliases.

I was reading on a blog at http://www.lornajane.net/posts/2008/Screen-for-Linux and it's mentioned that the shell command command works for her to give her aliases. And I have a friend who started up screen for me on his distro of PCLinuxOS, aliases included there too.

As for one more person this isn't working for, another web page ( http://www.linux-archive.org/centos/...ng-bashrc.html ) where someone says screen isn't sourcing his ~/.bashrc file, apparently a CentOS user. Part of the reply to him states:
Quote:
Screen opens a "login shell", which means it will only read
.bash_profile and not .bashrc.
I have made sure that I have an alias specified in my ~/.bash_profile (most are define in /etc/profile) but still this doesn't work.

This is what my ~/.screenrc file looks like. It's almost a duplicate of the default one when installing screen on Slackware. I've not made any changes, and the only additions I've made are the last two lines.

Code:
#
# This is an example for the global screenrc file.
# You may want to install this file as /etc/screenrc.
# Check config.h for the exact location.
#
# Flaws of termcap and standard settings are done here.
#

#startup_message off

#defflow on # will force screen to process ^S/^Q

deflogin on
#autodetach off

vbell on
vbell_msg "   Wuff  ----  Wuff!!  "

# all termcap entries are now duplicated as terminfo entries.
# only difference should be the slightly modified syntax, and check for
# terminfo entries, that are already corected in the database.
# 
# G0 	we have a SEMI-GRAPHICS-CHARACTER-MODE
# WS	this sequence resizes our window.
# cs    this sequence changes the scrollregion
# hs@	we have no hardware statusline. screen will only believe that
#       there is a hardware status line if hs,ts,fs,ds are all set.
# ts    to statusline
# fs    from statusline
# ds    delete statusline
# al    add one line
# AL    add multiple lines
# dl    delete one line
# DL    delete multiple lines
# ic    insert one char (space)
# IC    insert multiple chars
# nx    terminal uses xon/xoff

termcap  facit|vt100|xterm LP:G0
terminfo facit|vt100|xterm LP:G0

#the vt100 description does not mention "dl". *sigh*
termcap  vt100 dl=5\E[M
terminfo vt100 dl=5\E[M

#facit's "al" / "dl"  are buggy if the current / last line
#contain attributes...
termcap  facit al=\E[L\E[K:AL@:dl@:DL@:cs=\E[%i%d;%dr:ic@
terminfo facit al=\E[L\E[K:AL@:dl@:DL@:cs=\E[%i%p1%d;%p2%dr:ic@

#make sun termcap/info better
termcap  sun 'up=^K:AL=\E[%dL:DL=\E[%dM:UP=\E[%dA:DO=\E[%dB:LE=\E[%dD:RI=\E[%dC:IC=\E[%d@:WS=1000\E[8;%d;%dt'
terminfo sun 'up=^K:AL=\E[%p1%dL:DL=\E[%p1%dM:UP=\E[%p1%dA:DO=\E[%p1%dB:LE=\E[%p1%dD:RI=\E[%p1%dC:IC=\E[%p1%d@:WS=\E[8;%p1%d;%p2%dt$<1000>'

#xterm understands both im/ic and doesn't have a status line.
#Note: Do not specify im and ic in the real termcap/info file as
#some programs (e.g. vi) will (no,no, may (jw)) not work anymore.
termcap  xterm|fptwist hs@:cs=\E[%i%d;%dr:im=\E[4h:ei=\E[4l
terminfo xterm|fptwist hs@:cs=\E[%i%p1%d;%p2%dr:im=\E[4h:ei=\E[4l

# Long time I had this in my private screenrc file. But many people
# seem to want it (jw):
# we do not want the width to change to 80 characters on startup:
# on suns, /etc/termcap has :is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l:
termcap xterm 'is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l'
terminfo xterm 'is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l'

#
# Do not use xterms alternate window buffer. 
# This one would not add lines to the scrollback buffer.
#termcap xterm|xterms|xs ti=\E7\E[?47l
#terminfo xterm|xterms|xs ti=\E7\E[?47l

#make hp700 termcap/info better
termcap  hp700 'Z0=\E[?3h:Z1=\E[?3l:hs:ts=\E[62"p\E[0$~\E[2$~\E[1$}:fs=\E[0}\E[61"p:ds=\E[62"p\E[1$~\E[61"p:ic@'
terminfo hp700 'Z0=\E[?3h:Z1=\E[?3l:hs:ts=\E[62"p\E[0$~\E[2$~\E[1$}:fs=\E[0}\E[61"p:ds=\E[62"p\E[1$~\E[61"p:ic@'

#wyse-75-42 must have defflow control (xo = "terminal uses xon/xoff")
#(nowadays: nx = padding doesn't work, have to use xon/off)
#essential to have it here, as this is a slow terminal.
termcap wy75-42 nx:xo:Z0=\E[?3h\E[31h:Z1=\E[?3l\E[31h
terminfo wy75-42 nx:xo:Z0=\E[?3h\E[31h:Z1=\E[?3l\E[31h

#remove some stupid / dangerous key bindings
bind ^k
#bind L
bind ^\
#make them better
bind \\ quit
bind K kill
bind I login on
bind O login off
bind } history

shell -$SHELL
hardstatus alwayslastline "%w"

Last edited by Andy Alkaline; 05-23-2009 at 09:56 PM. Reason: including distro info in body of post
 
Old 06-26-2009, 02:01 PM   #7
Andy Alkaline
Member
 
Registered: Jun 2004
Location: Minnesota, USA
Distribution: Slackware32-stable, Debian-wheezy-amd64, LFS 7.1
Posts: 351

Rep: Reputation: 27
What I find extremely odd about this is that most of the aliases I've defined are in /etc/profile.d/custom.sh, a file which is definitely getting read when I invoke a screen session. I know this because the custom environmental variables I've defined in custom.sh are set into my screen session when screen is invoked.

And then once I'm in the screen session, executing 'source /etc/profile' will do what it's supposed to do: read in /etc/profile and then whatever's in /etc/profile.d/. At that point, my aliases which are in custom.sh finally are added to my screen session environment.

So essentially, it seems the aliases are ignored the first time but not the second time, for no apparent reason.

Here's an excerpt from custom.sh:
Code:
alias cls="clear"
# alias rm="rm -i"
alias cp="cp -i"
alias mv="mv -i"
#alias pgrep="pgrep -l"
export VISUAL="/usr/bin/nano"
#alias netstat="netstat --numeric-hosts"
#export PATH="$add_root/bin:${PATH}"
export PATH="${PATH}:/usr/local/sbin"
export LS_OPTIONS="$LS_OPTIONS -lh"
export VVV=/var/log/packages
 
Old 06-26-2009, 02:32 PM   #8
rg3
Member
 
Registered: Jul 2007
Distribution: Slackware Linux
Posts: 505

Rep: Reputation: Disabled
I find it very weird that it fails for you. I start screen normally using /usr/bin/screen -A -D -R. I don't have a .bashrc or .bash_profile files. I do have a $HOME/.profile file that sets up some environment variables and custom aliases, but it doesn't re-source /etc/profile or anything similar. My $HOME/.screenrc is copied below. Even though /etc/profile is not re-sourced from my shell startup files, I do get the system aliases in my shell session inside screen. For example, the alias

Code:
alias dir='/bin/ls $LS_OPTIONS --format=vertical'
is present.

Code:
#
# Example of a user's .screenrc file
#

# This is how one can set a reattach password:
# password ODSJQf.4IJN7E    # "1234"

#term "xterm"
defutf8 on

# no annoying audible bell, please
vbell on

# detach on hangup
autodetach on

# don't display the copyright page
startup_message off

# emulate .logout message
pow_detach_msg "Screen session of \$LOGNAME \$:cr:\$:nl:ended."

# advertise hardstatus support to $TERMCAP
# termcapinfo  * '' 'hs:ts=\E_:fs=\E\\:ds=\E_\E\\'

# make the shell in every window a login shell
shell -$SHELL

# autoaka testing
# shellaka '> |tcsh'
# shellaka '$ |sh'

# set every new windows hardstatus line to somenthing descriptive
# defhstatus "screen: ^En (^Et)"

defscrollback 1024

# don't kill window after the process died
# zombie "^["

# enable support for the "alternate screen" capability in all windows
# altscreen on

################
#
# xterm tweaks
#

#xterm understands both im/ic and doesn't have a status line.
#Note: Do not specify im and ic in the real termcap/info file as
#some programs (e.g. vi) will not work anymore.
termcap  xterm hs@:cs=\E[%i%d;%dr:im=\E[4h:ei=\E[4l
terminfo xterm hs@:cs=\E[%i%p1%d;%p2%dr:im=\E[4h:ei=\E[4l

#80/132 column switching must be enabled for ^AW to work
#change init sequence to not switch width
termcapinfo  xterm Z0=\E[?3h:Z1=\E[?3l:is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l

# Make the output buffer large for (fast) xterms.
#termcapinfo xterm* OL=10000
termcapinfo xterm* OL=100

# tell screen that xterm can switch to dark background and has function
# keys.
termcapinfo xterm 'VR=\E[?5h:VN=\E[?5l'
termcapinfo xterm 'k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~'
termcapinfo xterm 'kh=\EOH:kI=\E[2~:kD=\E[3~:kH=\EOF:kP=\E[5~:kN=\E[6~'

# special xterm hardstatus: use the window title.
termcapinfo xterm 'hs:ts=\E]2;:fs=\007:ds=\E]2;screen\007'

#terminfo xterm 'vb=\E[?5h$<200/>\E[?5l'
termcapinfo xterm 'vi=\E[?25l:ve=\E[34h\E[?25h:vs=\E[34l'

# emulate part of the 'K' charset
termcapinfo   xterm 'XC=K%,%\E(B,[\304,\\\\\326,]\334,{\344,|\366,}\374,~\337'

# xterm-52 tweaks:
# - uses background color for delete operations
termcapinfo xterm* be

################
#
# wyse terminals
#

#wyse-75-42 must have flow control (xo = "terminal uses xon/xoff")
#essential to have it here, as this is a slow terminal.
termcapinfo wy75-42 xo:hs@

# New termcap sequences for cursor application mode.
termcapinfo wy* CS=\E[?1h:CE=\E[?1l:vi=\E[?25l:ve=\E[?25h:VR=\E[?5h:VN=\E[?5l:cb=\E[1K:CD=\E[1J

################
#
# other terminals
#

# make hp700 termcap/info better
termcapinfo  hp700 'Z0=\E[?3h:Z1=\E[?3l:hs:ts=\E[62"p\E[0$~\E[2$~\E[1$}:fs=\E[0}\E[61"p:ds=\E[62"p\E[1$~\E[61"p:ic@'

# Extend the vt100 desciption by some sequences.
termcap  vt100* ms:AL=\E[%dL:DL=\E[%dM:UP=\E[%dA:DO=\E[%dB:LE=\E[%dD:RI=\E[%dC
terminfo vt100* ms:AL=\E[%p1%dL:DL=\E[%p1%dM:UP=\E[%p1%dA:DO=\E[%p1%dB:LE=\E[%p1%dD:RI=\E[%p1%dC
termcapinfo linux C8
# old rxvt versions also need this
# termcapinfo rxvt C8


################
#
# keybindings
#

#remove some stupid / dangerous key bindings
bind k
bind ^k
bind .
bind ^\
bind \\
bind ^h
bind h
#make them better
bind 'K' kill
bind 'I' login on
bind 'O' login off
bind '}' history

# Yet another hack:
# Prepend/append register [/] to the paste if ^a^] is pressed.
# This lets me have autoindent mode in vi.
register [ "\033:se noai\015a"
register ] "\033:se ai\015a"
bind ^] paste [.]

################
#
# default windows
#

# screen -t local 0
# screen -t mail 1 mutt
# screen -t 40 2 rlogin server

# caption always "%3n %t%? @%u%?%? [%h]%?%=%c"
# hardstatus alwaysignore
# hardstatus alwayslastline "%Lw"

# bind = resize =
# bind + resize +1
# bind - resize -1
# bind _ resize max
#
# defnonblock 1
# blankerprg rain -d 100
# idle 30 blanker
 
Old 06-27-2009, 03:57 PM   #9
Andy Alkaline
Member
 
Registered: Jun 2004
Location: Minnesota, USA
Distribution: Slackware32-stable, Debian-wheezy-amd64, LFS 7.1
Posts: 351

Rep: Reputation: 27
Quote:
Originally Posted by rg3 View Post
Even though /etc/profile is not re-sourced from my shell startup files,
I suppose I only assumed that was happening. You're saying that a user's current environmental vars are exported into his screen session automatically?

Using your command line options and a copy of your screenrc (into ~/.screenrc, and after creating the symlink ~/.profile -> ~/.bash_profile, I get the same result. No aliases, unless I source /etc/profile after I'm in screen. Of course that only applies it to my current screen window.

Are you using Slackware? The user who started this post is a Slackware user, and I am.

Last edited by Andy Alkaline; 06-27-2009 at 03:58 PM. Reason: fixing typos
 
Old 06-28-2009, 04:19 AM   #10
rg3
Member
 
Registered: Jul 2007
Distribution: Slackware Linux
Posts: 505

Rep: Reputation: Disabled
Yes, I've been running slackware-current for years, and it has always worked for me.
 
Old 04-18-2011, 05:25 PM   #11
Fragsworth
LQ Newbie
 
Registered: Apr 2011
Posts: 1

Rep: Reputation: 0
I had this problem too, what fixed it for me was adding the "shell -$SHELL" line.

Naturally you might just try to append this to the file. This won't work, however, if you create screens inside the .screenrc file. It must be added BEFORE any screens are created in the .screenrc file:

Code:
shell -$SHELL

# Create 3 screens on startup
screen -t sh1 0
screen -t sh2 1
screen -t sh3 2

Last edited by Fragsworth; 04-18-2011 at 05:27 PM. Reason: clarity
 
  


Reply

Tags
aliases, bashprofile, bashrc, environment, environmental, profile, screen, screenrc, variables


Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Lost the login screen of SUSE 10.1 biscit Linux - Desktop 4 03-01-2009 02:20 PM
wrap lines at 80 for long aliases in .aliases.csh jhwilliams Linux - Software 0 07-26-2007 07:49 AM
Lost half of my screen on laptop sheine Linux - Hardware 8 05-21-2007 08:02 AM
sendmail and NIS databases (aliases, mail.aliases) - what kind of databases? cotton213 Linux - Software 0 03-14-2006 05:57 PM
Make Screen respect bash aliases VxJasonxV Linux - Software 8 02-05-2004 03:00 AM


All times are GMT -5. The time now is 10:48 PM.

Main Menu
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
identi.ca: @linuxquestions
Facebook: linuxquestions Google+: linuxquestions
Open Source Consulting | Domain Registration