Changing the prompt for csh on FreeBSD 8.1
The prompt by default for csh on FreeBSD is simply a sing percent symbol.
There is not space before or after this. I don’t like it and it drives me crazy. I like a prompt to tell me three things:
- Who is logged in.
- The machine name.
- The current path.
This change is quite simple. It can be made temporarily, permanently for all users, or permanently for a single user.
Temporary
Sometimes you don’t want to make a permanent change to the prompt. Especially if you are on someone else’s system temporarily and using one of their shells. In such a case, setting the prompt temporarily is desired.
To see the prompt temporarily, simply run this command:
Your prompt should now look as follows:
This is only temporary. As soon as you close the shell, the settings is gone and any new shells will continue to have the old setting.
All Users
To make a change for all users, the file that needs to be edited is /etc/csh.cshrc.
By default the file is empty except for some comments. Line that are comments begin with the # character.
Add these lines to empty file:
if ($?prompt) then # An interactive shell -- set some stuff up set prompt = "[%n@%m %c]$ " endif
After making this change, your prompt should look as follows:
If the file is not empty then you probably have to search yourself if the prompt is being set and replace it with the above.
Be careful that the prompt is not set for a single user because if it is, the user’s setting overrides the global settings.
Single User
The prompt can be set on a user by user basis. The user’s settings will override the global setting.
To make a change for a single user, the file that needs to be edited is ~/csh.cshrc.
By default the file looks as follows:
# .cshrc - csh resource script, read at beginning of execution by each shell # # see also csh(1), environ(7). # alias h history 25 alias j jobs -l alias la ls -a alias lf ls -FA alias ll ls -lA # A righteous umask umask 22 set path = (/sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin /usr/local/bin $HOME/bin) setenv EDITOR vi setenv PAGER more setenv BLOCKSIZE K if ($?prompt) then # An interactive shell -- set some stuff up set filec set history = 100 set savehist = 100 set mail = (/var/mail/$USER) if ( $?tcsh ) then bindkey "^W" backward-delete-word bindkey -k up history-search-backward bindkey -k down history-search-forward endif endif
After modification, my /etc/csh.cshrc looks like this:
# $FreeBSD$ # # .cshrc - csh resource script, read at beginning of execution by each shell # # see also csh(1), environ(7). # alias h history 25 alias j jobs -l alias la ls -a alias lf ls -FA alias ll ls -lA # A righteous umask umask 22 set path = (/sbin /bin /usr/sbin /usr/bin /usr/games \ /usr/local/sbin /usr/local/bin $HOME/bin \ /usr/local/kde4/bin /usr/local/kde4/sbin \ /usr/X11R6/kde4/bin /usr/X11R6/kde4/sbin \ /usr/X11R6/kde4/lib/kde4/libexec) setenv EDITOR vi setenv PAGER more setenv BLOCKSIZE K if ($?prompt) then # An interactive shell -- set some stuff up set prompt = "[%n@%m %c]$ " set filec set history = 100 set savehist = 100 set mail = (/var/mail/$USER) if ( $?tcsh ) then bindkey "^W" backward-delete-word bindkey -k up history-search-backward bindkey -k down history-search-forward endif endif
Your prompt should now look as follows:
Whatever you set the prompt to as a single user will override the global setting.
Good reference material, thanks 🙂
Rhyous Hello
On the above page have the references in the ALL Users section and the Single User section got mixed up?
Shouldn't All Users refer to /etc/csh.cshrc and Single User to ~.cshrc or is it me just getting confused?
Cheers
Dave
How did I have such a typo...you are so correct.