1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
Notes for using SlackBuilds.org csh package:
This csh build conflicts slightly with Slackware's tcsh package. The
easiest way to use this is to "removepkg tcsh" before installing csh. If
you want to do this, you can skip the next section.
Installing csh and tcsh together
--------------------------------
It's possible for csh to coexist with tcsh, with a few caveats:
The shell is installed as /usr/bin/csh to avoid conflicting with
Slackware's own tcsh package (which makes /bin/csh a symlink to tcsh). If
you want to make /bin/csh point to the real csh, you have two choices:
1. remove the /bin/csh symlink before installing the csh package:
# rm -f /bin/csh
The /bin/csh symlink will get created when csh is installed.
2. adjust the symlink manually after csh installation:
# rm -f /bin/csh
# ln -s ../usr/bin/csh /bin/csh
This works the same way as e.g. the /usr/bin/vi symlink, which points
to either elvis or vim.
If you have both csh and Slackware's tcsh installed, and you remove csh,
you'll want to reinstall tcsh to clean up afterwards.
Removing tcsh while csh is installed should be perfectly OK.
Installing/upgrading tcsh when csh is already installed is probably a
bad idea. Remove csh first, install tcsh, then install csh.
As far as I know, nothing in Slackware depends on tcsh, so if you
mess things up, you won't break your OS. You can always put things
back to Slackware's default state by removing both csh and tcsh, then
reinstalling tcsh.
Using csh as a login shell
--------------------------
If you want to use csh as a login shell, be aware that Slackware's
shipped /etc/csh.login (from the etc package) contains tcsh-specific
code, which prevents the /etc/profile.d/*.csh scripts from running. This
won't prevent you from logging in, but your environment won't be set up
correctly, you'll see "[: No match." errors, and your prompt won't show
your username, hostname, current directory as tcsh does.
To fix this, you can replace /etc/csh.login with the /etc/csh.login.new
installed with the csh package. It behaves the same as the original,
for tcsh, and has conditional code to make csh behave correctly.
# cp /etc/csh.login /etc/csh.login.orig # back up original just in case
# mv /etc/csh.login.new /etc/csh.login
If you don't want to replace Slackware's csh.login, just rm
/etc/csh.login.new and forget about it.
Unfortunately, some of the /etc/profile.d/*.csh scripts shipped
with Slackware (or various SBo packages) aren't compatible with the
original csh. Specifically, qt5.csh will cause an "Illegal variable
name" error. You can ignore this, or you can fix it by editing
/etc/profile.d/qt5.csh and changing "$?" to "$status" (on line 27, in
Slackware 15.0).
Other notes
-----------
You should read the man page for csh. Also
/usr/doc/csh-$VERSION/paper.(txt|pdf) is a good intro to the C shell for
beginning users. Also, if you're an experienced tcsh user, you might
re-read the NEW FEATURES section in tcsh's man page (it describes the
tcsh features you won't find in csh).
NEVER make csh the default shell for the root account! In fact, it's
probably a bad idea to ever change root's default shell on any Linux
or UNIX system, especially to a third-party one that isn't shipped
with the OS.
|