On Wednesday 20 April 2011 00:26:04 Marian Marinov wrote:
On Tuesday 19 April 2011 20:18:38 Roland Roland wrote:
Dear all,
i've appended the below to /etc/bashrc it works like a charm with ssh connections though SFTP sessions fail since the below is being sent to the intiator. any way of limiting the below to none sftp sessions? or any other idea for it to work?
# If id command returns zero, you’ve root access. if [ $(id -u) -eq 0 ]; then # you are root, set red colour prompt echo "###############################################" echo "### You are now working as ROOT. ###" echo "### Pay attention to what you type. ###" echo "###############################################" PS1="\[$(tput setaf 1)\]\u@\h:\w #\[$(tput sgr0)\]" else # normal echo echo " ###########################################################" echo "Welcome $(whoami), here's something to start your day with:" echo echo `sh /etc/lines.sh /etc/quotes.txt` echo " ############################################################" echo PS1="[\u@\h:\w] $" fi
Rolan, you have two choices:
Print the whole content on STDERR so you don't disturb the sftp
if [ "$-" != 'hBc' ]; then echo 'your content here'; fi
If you go to the second option, the idea there is that $- is set to hBc every time you use the shell from SFTP (non-interactive mode). So you echo all the things you like only if it is an interactive shell.
Marian
Just to make things clear, this is from the bash manual:
An interactive shell is one started without non-option arguments and without the -c option whose standard input and error are both connected to terminals (as determined by isatty(3)), or one started with the -i option. PS1 is set and $- includes i if bash is interactive, allowing a shell script or a startup file to test this state.
You can also test if you want with these two tests:
if [[ "$-" =~ 'i' ]]; then echo interactive; fi
if ( echo $- |grep i > /dev/null ); then echo interactive; fi
Marian