Linux中tcsh/tcsh和bash的环境变量的配置以及切换shell版本 | 您所在的位置:网站首页 › shell设置环境变量 › Linux中tcsh/tcsh和bash的环境变量的配置以及切换shell版本 |
Linux中tcsh/tcsh和bash的环境变量的设置
文章目录
Linux中tcsh/tcsh和bash的环境变量的设置一,前言二,tcsh/csh中设置环境变量:set和setenv三,bash中更改环境变量:export四,使用chsh命令更改当前使用的shell五,关于永久更改环境变量的问题
一,前言
笔者最近在工作环境内使用export命令设置环境变量时,出现了:export:Command not found.的错误,经研究才发现Linux内支持多种Shell,比如sh、bash、csh、tcsh、ash。更改环境变量的命令在各种shell中有所不同,在笔者的工作环境中使用的shell为tcsh,并不支持export命令,所以才导致找不到命令的错误。通过使用 echo $SHELL,可查看当前环境所使用的shell类型: 也可以通过 cat命令查看当前Linux系统存在的shell版本: cat/etc/shells 在笔者的Ubuntu系统中,shell的版本较少: 本着研究精神,笔者将对常用的tcsh和bash中关于环境变量的设置问题进行总结梳理。 二,tcsh/csh中设置环境变量:set和setenvcsh全称为 C shell,语法类似C语言,故有此名称,设计者为Bill Joy(vi编辑器也是此人开发的)。而tcsh则为csh的增强版,加入了命令补全功能,提供了更加强大的语法支持。 csh/tcsh有两种类型的变量:局部变量和环境变量 局域变量是在shell内部声明的 环境变量是全局域的变量 使用set来定义局部变量, 使用setenv可以定义环境变量,局部变量只对本shell有效, 不能传递给子shell, 但环境变量可传递给子shell, setenv有点类似于bash中export操作。它们二者的语法如下: set varname = value; setenv varname2 valu2;使用示例: 此外,可以使用printenv命令打印出当前系统的所有环境变量: 环境变量中,我们经常使用的是PATH环境变量,相关操作一般有如下三种: setenv PATH "xxx/xxx/xx" #将PATH设置为"xxx/xxx/xx"setenv PATH "${PATH}:/usr/local/sbin" #追加/usr/local/sbin到PATH中setenv PATH "${PATH}:${HOME}/bin" #追加${HOME}/bin到PATH中需要注意的是,在命令行中直接这样设置环境变量只对当前窗口有效,如果将当前窗口关闭,或者新开一个控制窗口,之前关于变量的设置将失效: 关于永久设置环境变量的操作,将在文章末尾说明。 三,bash中更改环境变量:exportbash shell 是 Linux 的默认 shell, 由 GNU 组织开发,保持了对 sh shell 的兼容性,是各种 Linux 发行版默认配置的 shell。由于bash的通用性和普及性,导致笔者一度认为shell 就是bash shell。 在bash中用于设置或显示环境变量的命令是export。 export 可新增,修改或删除环境变量,供后续执行的程序使用。和tcsh/csh中的setenv一样, export 的效力仅限于该次登陆操作,如果关闭该命令控制窗口,当前export的操作将失效。 PATH=/etc #等于两边不能有空格export PATH=$PATH:/xxx/xxx/bin * #追加/xxx/xxx/bin*语法: export [-fnp][变量名称]=[变量设置值] -f 代表[变量名称]中为函数名称。-n 删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。-p 列出所有的shell赋予程序的环境变量如下所示,使用export -p命令可以列出当前的环境变量值: 关于定义环境变量和复制操作: export MYENV //定义环境变量 export MYENV=7 //定义环境变量并赋值 四,使用chsh命令更改当前使用的shell查看当前环境所使用的shell是哪一种有很多种方法,这里列举两种: 一种是使用env命令,另一种是直接打印出SHELL。 如果想更改当前使用的shell,可以使用chsh命令: 名称 chsh - change login shell 使用 chsh [options] [LOGIN] 描述 chsh 命令更改用户login shell程序。这将确定用户的初始登录命令的名称。普通用户只能为自己的帐户更改login shell;超级用户可以更改任何帐户的login shell。 选项 适用于 chsh 命令的选项包括: -h, --help 显示帮助消息并退出。 -R, --root CHROOT_DIR 在CHROOT_DIR目录中应用更改,并使用CHROOT_DIR目录中的配置文件。 -s, --shell SHELL 用户的新login shell的名称。将此字段设置为空会导致系统选择默认登录 shell。如果未选择 -s 选项,chsh 将以交互方式运行,提示用户使用当前登录 shell。输入新值以更改 shell,或将该行留空以使用当前值。当前外壳显示在一对 [ ] 标记之间。 注意事项 对login shell的唯一限制是命令名称必须在 /etc/shells 中列出,除非调用者是超级用户,然后可以添加任何值。具有受限login shell的帐户不得更改其login shell。因此,不鼓励将 /bin/rsh 放在 /etc/shells 中,因为意外地更改为受限制的 shell 会阻止用户将其登录 shell 更改回其原始值。 相关文件 /etc/passwd User account information. /etc/shells List of valid login shells. /etc/login.defs Shadow password suite configuration.使用示例: chsh -s /bin/sh 执行完退出重新登录,更改将生效。 五,关于永久更改环境变量的问题上文中所述关于更改环境变量的命令操作都是一次性的,关闭当前命令窗口后将失效。用户可以通过修改一些配置文件达到永久修改环境变量的目的: 比如修改用户根目录下的~/.bashrc或~/.tcshrc文件: #打开文件 vim ~/.bashrc vim ~/.tcshrc #在文件末尾加上 export PATH=$PATH:/.../... setenv PATH $PATH:/.../... #使设置生效 source ~/.bashrc source ~/.tcshrc关于具体的配置文件修改,可以参考:Linux中profile、bashrc、/.bash_profile、/.bashrc、~/.bash_profile之间的区别和联系以及执行顺序,这里就不多加赘述。 需要注意的是,需谨慎修改相关配置文件,笔者因为错误操作,曾导致修改.tcshrc文件后,所有命令全部失效,报Command not found的错误,想恢复.tcshrc文件中的修改,却发现连vim也打不开了,这时读者可以通过/bin/vim来打开vim编辑器: /bin/vim ~/.tcshrc将之前修改的环境变量删除,然后重启环境即可解决此问题。 参考文章: 几种常见的Shell:sh、bash、csh、tcsh、ash linux配置csh设置环境变量 Linux之环境变量(永久设置) |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |