SlackwareThis Forum is for the discussion of Slackware Linux.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
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:
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.
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 Alt; 05-23-2009 at 09:56 PM.
Reason: including distro info in body of post
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
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
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 Alt; 06-27-2009 at 03:58 PM.
Reason: fixing typos
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:
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.