【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 会话。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/155169.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习之基于yolo的体育运动项目姿态估计识别计数系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 深度学习在体育运动项目姿态估计识别计数系统中的应用是一项具有挑战性和应用价值的研究领域。以下是对深度学习在体…

亚马逊运营中动态/静态住宅IP代理的应用有哪些?跨境电商必备

作为全球最大的电商平台之一,亚马逊已经成为许多商家的首选销售平台。而代理IP作为近几天互联网的热门工具,在跨境电商界也起着非常强大的作用。那么在亚马逊运营中,适合动态住宅代理还是静态住宅代理呢?下面我们一起来探索&#…

位运算技巧及leetcode相关例题Java实现

目录 一、异或运算符的运用&&leetcode136 异或运算符 a ^ b ^ b a leetcode136 二、n & (n - 1)&&leetcode133 n & (n - 1):消除n最右边的一个1 leetcode133/剑指offer15 三、m的n次方(n是正整数) 常规写法 二进制的快…

LeetCode热题100——贪心算法

贪心算法 1. 买卖股票最大利润2. 跳跃游戏3. 跳跃游戏Ⅱ 1. 买卖股票最大利润 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一…

linuxTcp状态转换

1.TCP状态转换 在TCP进行三次握手,或者四次挥手的过程中,通信的服务器和客户端内部会发送状态上的变化,发生的状态变化在程序中是看不到的,这个状态的变化也不需要程序猿去维护,但是在某些情况下进行程序的调试会去查…

《QT从基础到进阶·三十六》QWidget实现收缩栏的效果

功能: 1、可以在收缩栏插件中添加界面 2、可以把界面展开或收缩 3、可以用鼠标拖动界面改变界面的排放顺序 源码放在最下方 1、可以在收缩栏插件中添加界面 virtual void addWidget(QWidget* widget, const QString& label, const QIcon& icon QIcon())…

打造高效医患沟通:陪诊小程序开发技术指南

随着科技的不断发展,陪诊小程序作为医患沟通的新工具逐渐成为关注焦点。本文将带领你通过使用React和Node.js技术栈,构建一个功能强大且用户友好的陪诊小程序,实现医患互动的便捷和高效。 1. 准备工作 确保你的开发环境中已安装了Node.js和…

封装Vue中的axios请求库

安装axios:首先,在项目中安装axios库。可以使用npm或者yarn进行安装。 npm install axios创建封装文件:在src目录下创建一个api文件夹,并在该文件夹下创建一个request.js文件。 在request.js文件中,引入axios库和Vue&…

点击这里,获取数据治理加速器!

数据管理员:又双叒叕…盘一遍数据,这种工作究竟还要重复多少次?! • 上上个月,发现数据有些问题,我把数据盘了一遍,梳理完数据的关联表才定位到问题; • 上个月,进行数据…

竞赛 题目:基于深度学习的人脸表情识别 - 卷积神经网络 竞赛项目 代码

文章目录 0 简介1 项目说明2 数据集介绍:3 思路分析及代码实现3.1 数据可视化3.2 数据分离3.3 数据可视化3.4 在pytorch下创建数据集3.4.1 创建data-label对照表3.4.2 重写Dataset类3.4.3 数据集的使用 4 网络模型搭建4.1 训练模型4.2 模型的保存与加载 5 相关源码6…

js判断参数是否为空方法

这边记录一下大致的判断情况, 写法一(不推荐): function foo(arg){//写法一:不严谨arg arg ? arg : 我是默认值console.log(arg) }foo(123) //输出:123 foo() //输出:我是默认值 foo(0) …

去除IDEA中代码的波浪线(黄色警示线)

去除IDEA中代码的波浪线 首先是点击File—>Settings 操作如下图所示: 然后点击Editor—>Inspections—>General—>Duplicated code fragment(去掉勾选)—>Apply—>OK 即可,详情请看下图所示:

【Java】Groovy 语言应用场景以及积累

Groovy 是一种多用途的编程语言,它可以用于多种开发场景。以下是 Groovy 可以用于的一些开发领域和示例: 脚本编写: Groovy 的简洁语法和强大的动态特性使其成为编写脚本的理想选择。 def message "Hello, World!" println messag…

7-sqlalchemy快速使用和原生操作、增删查改、增加和基于对象的跨表查询、scoped线程安全、g对象、基本增查改和高级查询

1 sqlalchemy快速使用 2 sqlalchemy原生操作 3 sqlalchemy操作表 3.2 基本增删查改 4 一对多关系 4.1 关系建立 4.2 增加和基于对象的跨表查询 5 多对多关系 5.2 增加和基于对象跨表查 6 scoped线程安全 7 g对象 8 基本增查改 7 常用查询 1 sqlalchemy快速使用 1.1 介绍 # …

什么是数字化工厂?企业数字化转型有什么好处?

科技在发展,时代在进步,全球信息化、数字化的步伐越来越快,数字化转型是否成功也成为企业在未来发展中能否做大做强的关键因素。而数字化工厂就是制造业数字化发展的一个重要发展方向,那么究竟什么是数字化工厂呢?它和…

Linux | 进程间通信

目录 前言 一、进程间通信的基本概念 二、管道 1、管道的基本概念 2、匿名管道 (1)原理 (2)测试代码 (3)读写控制相关问题 a、读端关闭 b、写端关闭 c、读快写慢 d、读慢些快 (4&a…

Unity下载资源且保存

UnityWebRequest(WWW——已过时) 替代:Unity不再支持WWW后,使用UnityWebRequest完成web请求。 Unity - Scripting API: UnityWebRequest (unity3d.com)https://docs.unity3d.com/ScriptReference/Networking.UnityWebRequest.html if (www.isNetworkEr…

GPT-4:论文阅读笔记

GPT-4的输入和输出:输入的内容是文本或图片,输出的内容是文本。因此,GPT-4是一种输入端多模态的模型。GPT-4的效果:在真实世界中还是比不上人类,但是在很多专业性的任务上已经达到了人类的水平,甚至超过人类…

mongdb 删除重复的数据,并保留其中一条

脚本如下,将下面集合与字段替换成自己的集合名和重复字段名即可。 var removeInstanceIdArr = []; var data = db.getCollection("table_test").aggregate( [ { "$group" : { "key": {"Id"…

「全域BI-运营」——助力双11店铺数据可视化

大部分商家主要靠销售商品赚取利润,因此要及时掌握:店铺流量是否异常波动?商品/新品是否有良好竞争力?如何更好营销吸引用户提高客单和回购?掌握这些情况以后,才能进一步决策。 特别是双11期间&#xff0c…