为什么在回显 $variable 时得到空白输出?

为什么在回显 $variable 时得到空白输出?

我只是想将echo变量存储在文件中。发出命令时,echo $variable我得到一个没有输出的黑色区域。我不明白为什么。

文件1的内容:

name="Jhon"

我的输出

在此输入图像描述

尝试过的解决方案:

source /home/ec2-user/file1

之后我得到了正确的答案。但如果我从实例注销并再次回来,它就不起作用了。

我尝试了不同类型的实例,但得到了相同的结果。

在大多数 Linux 教程中,当它们执行变量时,它会从多个文件中获取变量。为什么我要发出source命令?

答案1

“存储在文件中的变量”并不是真正的东西。大多数类型的变量存在于正在运行的进程(shell 或其他程序)的状态中。 (环境变量、shell 变量等之间存在差异,但这在这里并不重要。)每个进程都有自己的一组变量(除了环境变量的副本在创建时由子进程继承)。

您可以使用类似 的命令在 shell 进程中定义变量name="Jhon",但它仅在该特定 shell 进程中定义该变量,而不是任何其他进程。另外,它是一个可执行命令;该定义仅在执行时发生(例如,当它位于文件中时),并且可以稍后通过运行其他命令(例如name="Rho"或 )来更改unset name

“到处”定义变量的常用方法是在 shell 初始化文件中放置一个命令来定义它,例如 ~/.bashrc。但只有当 shell 启动时运行该文件中的命令时,此定义才会被执行;例如,bash 登录 bash shell 将运行 ~/.bash_profile (或 ~/.bash_login 或 ~/.profile)而不是 ~/.bashrc; bash 以外的 shell(如 zsh 和 dash)仍将运行不同的初始化文件。

答案2

rc为了持久性,在 或源文件中声明变量rc

echo 'source /home/ec2-user/file1' >> /home/ec2-user/.bashrc

相关内容