linux配置csh设置环境变量

linux下csh设置环境变量有两种方式set 和 setenv

一、区别
(1)setenv是csh的命令; 在bash中是没有setenv的
(2)csh/tcsh有两种类型的变量:局部变量和环境变量.
局域变量是在shell内部声明的;环境变量是全局域的变量.
使用set来定义局部变量, 使用setenv可以定义环境变量;
局部变量只对本shell有效, 不能传递给子shell;
但环境变量可传递给子shell. setenv有点类似于bash中export一个变量.
(3)当然, set 和setenv的语法不一样

# set varname = value; 
# setenv varname2 valu2;

二、配置环境变量
bash的shell默认用户下面的配置文件是:.bashrc。用户登陆之后,默认执行该配置文件内容,让环境变量生效

csh的shell默认用户下面的配置文件是:.cshrc。 用户登陆之后,默认执行该配置文件内容,让环境变量生效(如果把用户的shell从bash改成csh之后,目录下的配置文件还是.bashrc,用户可以自己新建一个.cshrc来配合csh的使用。配置文件弄完后,可以执行source .cshrc生效)

三、set 和 setenv区别示例

[root@ctm9018 ~]# useradd test1 -s /bin/csh   #新建用户test1,shell为csh
[root@ctm9018 ~]# useradd test2 -s /bin/csh   #新建用户test2,shell为csh 
[root@ctm9018 ~]# su - test1   #切换到用户test1
[test1@ctm9018 ~]$ set var1=123   #使用set给var1设置变量
[test1@ctm9018 ~]$ setenv var2 456   #使用setenv给var2设置变量
[test1@ctm9018 ~]$ su test2   #从test1用户切换到test2用户,注意切换的时候使用su,不要使用su -,如果使用su - 就不是上一个shell的子shell了
[test2@ctm9018 test1]$ echo $var1   #set设置的var1为局部变量,所以在子shell里边显示没有定义
var1: Undefined variable.
[test2@ctm9018 test1]$ echo $var2 #setenv设置的var2为全局变量,所以在子shell里边可以看到var2的值
456
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值