当前位置: 首页 > news >正文

【CSH 入门基础 8 -- csh 中 set 与 setenv 的区别 】

文章目录

      • set 命令
      • setenv 命令
      • 区别
      • 设置系统路径变量PATH
        • 添加单个路径
        • 设置多个路径
      • 举例
      • 例子:编辑 .cshrc 文件
    • 设置文件路径
      • 设置和使用局部变量
      • 永久设置变量

csh(C shell)和它的变体 tcsh(增强型 C shell)中,setsetenv 是设置变量的两个不同命令。它们分别用于设置 shell 变量和环境变量。以下是两者的详细介绍和例子:

set 命令

set 命令用于定义或修改 shell 变量的值。Shell 变量只在当前 shell 中有效,并不会被子 shell 或其他程序继承。
语法:

set variable=value 

例子:

set myvar="Hello World" 

这个命令创建了一个名为 myvar 的 shell 变量,并给它赋值为字符串 “Hello World”。
要显示变量的值,可以使用 echo 命令:

echo $myvar 

要清除变量,使用 unset 命令:

unset myvar 

setenv 命令

setenv 命令用于设置环境变量。与 shell 变量不同,环境变量会被传递给当前 shell 的子进程。这些变量通常用于配置系统行为或提供程序运行时需要的信息。

语法:

setenv VARIABLE VALUE 

注意 VARIABLE 通常大写,但这不是必须的。

例子:

setenv PATH "/usr/local/bin:$PATH" 

这个命令将 /usr/local/bin 添加到当前的 PATH 环境变量之前。$PATH 是引用现有的 PATH 值。

要显示环境变量的值,可以直接 echo

echo $PATH 

要清除环境变量,使用 unsetenv 命令:

unsetenv PATH

区别

主要区别在于它们设置的变量类型不同:

  • set 用于设置 shell 变量,这些变量只在当前 shell 中有效。
  • setenv 用于设置环境变量,这些变量能够被当前 shell 及其子进程所继承。

环境变量通常用于系统配置,而 shell 变量更多用于控制 shell 本身的行为。例如,PATH 是一个环境变量,它告诉 shell 在哪些目录中查找可执行文件;prompttcsh 的 shell 变量,用于设置命令提示符的显示样式。

设置系统路径变量PATH

csh 中,你可以使用 set 命令来设置路径变量。你可以添加一个新的目录到 path,也可以重置整个 path 变量。以下是两种常见的设置方式:

添加单个路径
set path = ($path /new/directory) 

这个命令将 /new/directory 添加到现有的 path 变量列表中。注意 $path 是引用现有的 path 内容,新的目录 /new/directory 被添加到这个列表的末尾。

设置多个路径
set path = (/usr/local/bin /usr/bin /bin /new/directory) 

这个命令完全重置 path 变量,包含了新的一系列目录。

举例

假设你想添加你的家目录下的 bin 目录到 path,以便你能够直接执行那个目录中的脚本和程序。 在 csh 中,你可以执行以下命令:

set path = ($path ~/bin) 

这样设置之后,如果你有可执行文件在 ~/bin 目录中,你可以从任何位置直接通过文件名来调用它们,就像其他系统命令一样。

如果你想让这个变更在每次登录时自动生效,你应该将这行命令添加到你的 home 目录下的 .cshrc 文件中。.cshrc 文件是 csh 启动时读取的配置文件,类似于 Bash 的 .bashrc

例子:编辑 .cshrc 文件

打开 .cshrc 文件:

vi ~/.cshrc 

然后添加设置 path 变量的命令:

set path = ($path ~/bin) 

保存并退出编辑器。 下次当你打开一个新的 csh 会话时,你的 path 将自动包含你的 ~/bin 目录。

设置文件路径

csh (C Shell) 中设置文件路径通常涉及到定义环境变量,这些环境变量可以用来存储文件或目录的路径,便于在脚本或命令行中使用。以下是如何在 csh 中设置文件路径的不同场景。

设置和使用局部变量

如果你不需要在子进程中使用某个路径变量,你可以使用 set 命令来定义一个局部变量:

set my_file = "/path/to/my/file" 

局部变量 my_file 可以在当前 csh 会话中使用,但不会传播到子进程。你可以通过 $my_file 来引用它:

cat $my_file 

永久设置变量

如果你想要每次开启 csh 都能使用这些变量,你可以将 setenv 或者 set 命令添加到你的 ~/.cshrc 文件中。例如:

echo 'setenv MY_FILE_PATH "/path/to/my/file"' >> ~/.cshrc 

这样,每当你启动一个新的 csh 会话时,MY_FILE_PATH 环境变量就会自动设置。 记得每次修改 ~/.cshrc 文件后,为了让变更立即生效,可以通过 source 命令重新读取文件: csh source ~/.cshrc 或者简单地开启一个新的 csh 会话。

相关文章:

  • 谷歌浏览器任意文件访问漏洞(CVE-2023-4357)复现
  • ky10 server aarch64 离线安装openssl3.1.4
  • Linux防火墙常用操作及端口开放
  • 车牌识别 支持12种中文车牌类型 车牌数据集下载
  • 使用契约的链上限价订单
  • 股票池(三)
  • MAVEN——PACKAGE、INSTALL、DEPLOY的联系与区别
  • Linux环境下C++ 接入OpenSSL
  • sql server修改表结构及字段数据类型
  • Android Studio 安装及使用
  • 中国出海主力系列专访之三七互娱:亚马逊云科技助力三七互娱海外“出圈”之路
  • go 适配器模式
  • MySQL/Oracle用逗号分割的id怎么实现in (逗号分割的id字符串)。find_in_set(`id`, ‘1,2,3‘) 函数,
  • 从哪些方面分析Linux内核源码
  • C语言回文数(1106:回文数(函数专题))
  • cookie和session
  • Laravel核心解读--Facades
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • pdf文件如何在线转换为jpg图片
  • php中curl和soap方式请求服务超时问题
  • SegmentFault 2015 Top Rank
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • FaaS 的简单实践
  • #、%和$符号在OGNL表达式中经常出现
  • #考研#计算机文化知识1(局域网及网络互联)
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • (C语言)二分查找 超详细
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (南京观海微电子)——I3C协议介绍
  • (转)h264中avc和flv数据的解析
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net
  • .NET WebClient 类下载部分文件会错误?可能是解压缩的锅
  • .NET6 命令行启动及发布单个Exe文件
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题
  • .Net接口调试与案例
  • .secret勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复
  • //解决validator验证插件多个name相同只验证第一的问题
  • @manytomany 保存后数据被删除_[Windows] 数据恢复软件RStudio v8.14.179675 便携特别版...
  • [20170728]oracle保留字.txt
  • [android学习笔记]学习jni编程
  • [C语言][C++][时间复杂度详解分析]二分查找——杨氏矩阵查找数字详解!!!
  • [Fri 26 Jun 2015 ~ Thu 2 Jul 2015] Deep Learning in arxiv
  • [FxCop.设计规则]8. 也许参数类型应该是基类型
  • [js]js设计模式小结