首页 > 其他分享 >Liunx基础知识 -- 8

Liunx基础知识 -- 8

时间:2023-03-10 16:13:50浏览次数:48  
标签:变量 -- 环境变量 基础知识 命令 Liunx PATH HISTSIZE 我们

管理用户环境

在 Linux 新手发现有问题的领域中,管理用户环境变量可能是最晦涩的。尽管 Windows 操作系统有环境变量,但大多数用户很少(如果有的话)管理他们的环境变量。要从我们的 Linux 黑客系统中获得最大收益,您需要了解和管理环境变量以获得最佳性能、便利性,甚至可能是隐身性。

 

这些环境变量是在我们特定的用户环境中使用的变量。在大多数情况下,该环境就是您的 BASH shell。每个用户,包括 root,都有一组设置为默认值的环境变量,除非它们被更改。您可以更改这些值以使我们的系统更有效地工作并定制我们的工作环境以最好地满足我们的个人需求。

查看我们的环境变量

让我们首先通过输入 env 查看所有环境变量;

请注意,所有环境变量都是大写的,例如 HOME、PATH、SHELL 等。正如您将在本章后面看到的那样,您可以创建自己的用户定义变量(见下文),如果这样做,它是建议——但不是必需的——它们也全部大写。

此外,我们可以通过输入命令集来查看所有变量和任何用户定义的变量或命令别名。

此命令列出了我们系统独有的许多变量。在大多数情况下,此列表很长,他们无法在一页上查看所有内容。要逐行查看所有这些变量,您可以将输出通过管道传递给 more 命令,例如;

 

 

 现在,变量列表填满一个屏幕并停止,等待我们按下 ENTER 键前进到下一行。您可以这样做,直到我们找到我们正在寻找的任何变量。如果我们按几次 ENTER 键,我们会发现一个名为 HISTSIZE 的变量。点击 ENTER 键将带您逐一浏览这些变量中的每一个。每当您使用 more 命令进行输出时,您都可以使用 q 退出或退出并返回到命令提示符。

您可以使用过滤命令 grep 来查找感兴趣的变量,而不是乏味地滚动这个长长的变量列表。例如,正如您在上面看到的,有一个名为 HISTSIZE 的变量。此变量包含存储在命令历史文件中的命令数。也就是说,您之前键入的命令可以通过使用 BASH shell 中的向上和向下箭头重新调用。

让我们尝试使用 set 找到它并使用 grep 过滤输出以找到 HISTSIZE 变量。

 

 

正如您在上面看到的,此命令找到变量 HISTSIZE 并显示其值。此变量的默认值在您的系统上设置为 1000。这意味着 HISTSIZE 变量默认存储您最近的 1000 条命令。

查看变量值 

set 命令会显示你所有的变量名,但是如果想查看变量中存储的值,你可以使用关键字 echo 后跟美元符号 $ 和变量名,例如;

 

 

 需要注意的是,当你想使用存储在变量内部的值时,比如这里,我们需要在变量名前加上一个$。变量名称前的美元符号 ($) 表示您要使用变量内部的值,而不是变量的标签。

如上所述,HISTSIZE 变量包含存储在历史文件中的命令数的值。正如您在此屏幕截图中所见,HISTSIZE 变量设置为 1000。在某些情况下,我们可能不希望将过去的命令存储在历史文件中。这可能是因为您不想在系统上留下任何您的活动证据。在这种情况下,您可以将 HISTSIZE 变量设置为 0,系统将不会存储任何过去的命令。

 

 

 现在,当我们尝试使用向上或向下箭头来调用命令时,没有任何反应,因为系统不再存储我们的命令。隐蔽,但不方便。

导出我们的环境变量

当您更改环境变量时,它仅适用于该特定环境。在这种情况下,该环境是 BASH shell。这意味着一旦我们关闭该终端,我们对这些变量所做的任何更改都将丢失或设置回默认值。如果我们希望该值在我们的下一个终端会话和另一个终端会话中保留,我们需要导出该变量。将其视为将新值从当前环境(BASH shell)“导出”到系统的其余部分,以便它在每个环境中都可用。

我们可以通过简单地输入 export 然后输入变量名来做到这一点,例如;

 

 

 现在,当我们离开此环境并稍后返回时,HISTSIZE 变量设置为 0。当然,我们可以通过简单地输入将 HISTSIZE 变量设置回 1000;

 

 

 

改变我们的 Shell 提示符

Kali 中的默认 shell 提示符采用以下格式;

用户名@主机名:当前目录>

root@kali: 当前目录 

 我们可以通过设置 PS1 变量的值来更改默认命令提示符。该变量有一组特定的占位符,用于放置在提示中的信息。这些包括;

\u = 当前用户的名字

\h = 主机名

\W= 当前工作目录

让我们找点乐子,更改终端中的提示。包含我们对第一个终端的提示的环境变量是 PS1。我们可以通过键入以下内容来更改它:

 

现在,每次您打开终端时,系统都会提醒您您是“世界上最好的黑客”。

请记住,每当我们打开第一个终端 (PS1) 时,我们的提示现在将是“World's Best Hacker”,但第二个终端仍将是默认命令提示。这意味着,如果我们真的喜欢这个新的命令提示符并想保留它,我们需要将它导出,这样每次我们打开这个终端或任何终端时,提示符都会是“World's Best Hacker: #”

 

 

 改变我们的路径变量

环境中最重要的变量可能是我们的 PATH 变量。该变量控制 shell 在何处查找您键入的命令,例如 cd、ls、echo 等(它们通常都位于 sbin 或 bin 子目录中,例如 /usr/local/sbin 或 usr/local/垃圾桶)。如果 BASH shell 在我们的路径中的一个目录中找不到该命令,它会返回一个错误“找不到命令”,即使它确实存在于我们的 PATH 之外的另一个目录中。

让我们通过回显其内容来查看 PATH 变量的内容:

 

 

 

注意我们的 PATH 变量中包含的目录。这些通常是我们的系统命令所在的各种 /bin 和 /sbin 目录。当我们键入 ls 时,系统知道要在每个目录中查找 ls 命令,并在找到时执行它。

如果我们要下载并安装一个名为“newhackingtool”的新黑客工具到/root/newhackingtool 目录中,我们只能在该目录中使用它。这意味着每次我们想要使用该工具时,您都必须首先导航到 /root/newhackingtool。这可能很好,但有点不方便。为了能够从任何目录使用这个新工具,您只需将此目录添加到 PATH 变量中即可。

 

要将这个新的 hackingtool 目录添加到我们的 PATH 变量中,您可以输入:

在此命令中,您说的是“获取 PATH 变量 (PATH) 并为其分配 (=) 旧 PATH 变量 ($PATH) 的值并添加 /root/newhackingtool。”

请务必注意,我们已将 /root/newhackingtool 目录附加到您的 PATH 变量中。如果现在返回并检查 PATH 变量的内容,您现在将看到该目录已附加到 PATH 的末尾。

这意味着当你想运行你的 newhackingtool 时,你不需要导航到 /root/newhackingtool 目录。您现在可以从系统的任何位置执行新的黑客工具应用程序。BASH shell 现在将在该目录中查找我们的新工具!

创建新的用户定义变量

 

您可以通过简单地为新变量赋值来在 Linux 中创建您自己的自定义、用户定义的变量。语法相当简单;首先是变量的名称,然后是赋值符号“=”,最后是变量中的值,例如;

kali > MYNEWVARIABLE = "黑客是 21 世纪最有价值的技能组合"

 

现在,要查看该变量中的值,您可以使用后跟 $ 和变量名称的 echo 命令。

echo $MYNEWVARIABLE

黑客是 21 世纪最有价值的技能组合

如果你想删除这个新变量或任何系统或用户定义的变量,你可以使用 unset 命令。您可能希望在删除系统变量时保持谨慎,因为您的系统之后的运行可能会大不相同。

 

unset MYNEWVARIABLE

当您取消设置 MYNEWVARIABLE 时,您就删除了它。现在,当您回显同一个变量时,Linux 将返回一个空行。

虽然环境变量可能看起来有点晦涩,但它们可以控制 Linux 中工作环境的设置和外观。您可以管理它们,通过更改这些变量中的任何一个并导出它们来根据您的需要定制我们​​的环境。此外,我们可以创建新变量来帮助管理您的系统。

参考链接:https://www.hackers-arise.com/post/2017/05/24/Linux-for-Hackers-Part-8-Managing-the-User-Environment

 

 

标签:变量,--,环境变量,基础知识,命令,Liunx,PATH,HISTSIZE,我们
From: https://www.cnblogs.com/wgd-elwood/p/17203716.html

相关文章

  • 1万元!TP-Link发布Wi-Fi 7挖矿路由器:比RTX 4090快得多
    利润丰厚的挖矿市场人人眼红,TP-Link都单独成立了一家子公司TP-LinkASIC,一出手就打造了一款能挖矿的路由器。这款路由器型号“NX314”,重达3.9公斤,尺寸没有明确数据,但看起......
  • 谷歌浏览器插件实现拦截处理网页内容
    公司市面上有一套产品,且学校有对应教学教材,学校偶尔会用来做实操比赛,由于比赛系统是在产品外层包了一层壳(iframe嵌入产品)来实现实操,内部产品直接使用的线上正式版,产品经常......
  • 基于Mindspore2.0的GPT2预训练模型迁移教程
    摘要: 这篇文章主要目的是为了让大家能够清楚如何用MindSpore2.0来进行模型的迁移。本文分享自华为云社区《MindNLP-基于Mindspore2.0的GPT2预训练模型迁移教程》,作者:Sup......
  • 使用select 封装 socket api
    common_socket.h#ifndef__COMMSOCKET_H_#define__COMMSOCKET_H_#ifdef__cplusplusextern'C'{#endiftypedefstruct_socket_handle{in......
  • 电脑桌面便签软件哪个好
    对于很多职场人士来说,大部分的工作事项是需要在电脑上随手记录的,这样更加方便随时查看。而一款电脑桌面便签软件可以帮助我们随时记录各种重要的工作信息、工作流程、安排......
  • CWinThread Pump Message, crashing
    如果在MFC消息循环中收到非法访问异常试着找找是不是在多线程中哪个线程提前结束了,而线程创建的对象仍然存活,并且触发了 AccessViolation c0000005大消息泵里发现......
  • CMake学习
    cmake_minimum_required(VERSION3.16)project(cmake_test)set(CMAKE_CXX_STANDARD17)#头文件搜索路径include_directories(${PROJECT_SOURCE_DIR}/includes/facer......
  • ERP 和 MES 之间的联系是什么?
    从企业的管理来说,ERP(EnterpriseResourcePlanning,企业资源计划)与MES(ManufacturingExecutionSystem,即制造执行系统)系统之间的关系有点像公司总部与分厂的关系,ERP向......
  • Windows Server 2012上安装.NET Framework 3.5
    1、打开服务器管理器 首先,打开服务器管理器,点击左侧的“仪表盘”,如下图所示。2、添加角色和功能点击上图中的“添加角色和功能”,弹出下图所示“添加角色和功能向导”......
  • K8S迁移
    详解kubernetes备份恢复利器Velero|深入了解Carina系列第三期  Carina 是由博云主导并发起的云原生本地存储项目(GitHub地址为:https://github.com/cari......