[已解决]在终端中输入 set 命令得到的是一大段代码

在终端中输入 set 命令本来希望得到的是查看环境变量和我自己定义的变量,不想得到的却是一大段的代码。代码的内容我用 txt 文本保留了下来,附件奉上!我该如何解决这个问题呢!
set.txt (63.3 KB)

你得到的这一大段代码就是环境变量列表

也许 LZ 需要的是env或者export~

__all_modules ()
{
while read name; do
name=${name%% *};
printf “%s\n” “$name”;
done < <(pulseaudio --dump-modules 2> /dev/null)
}
这些也是环境变量吗?
ALSA_CONFIG_PATH=/etc/alsa-pulse.conf
AUDIODRIVER=pulseaudio
BASH=/bin/bash
环境变量不是应该是这样的吗?

我知道那两个命令,我就是在学习 set 命令而已,遇到了问题,跟书上写的不太一样,所以我就发了个帖子问一下,而且那些代码我不太看得懂!特别是后面的部分。

看看 man set 选 1p

这条命令貌似不常用?

不常用并不代表我可以忽略它不学啊!

=.= 不小心点了感谢不知道怎么撤消……以至于我觉得我有必要说一下“不常用我也要学啊” 。事实上我在大学初期也有这样的感受,但是我后来改变了。

事实上, 软件的使用是经济学:用最少的成本达到最大的效益。换而言之, 学习工具很大程度上是有目的性的,或者说有很强烈的目的性:指向——这些工具会让你的效率更高。

初一听好像很不对,学 notepad 不用 1 分钟,学 emacs 却要一本厚厚的书,只是为了 3 分钟的编辑任务,怎么能说学 emacs 是为了效率呢? 事实上,学习 emacs 的这一本书能够让你以后的一生在文本编辑这块,省下 好多 、 好多 、 好多 、 好多 的时间。。。

这其实是一个诀窍:使用工具而不是学习工具。 这也是务实的工程应用和学校教育最大的区别, 在实际的项目里你要去选择合适的工具来使效率最高收获最大,是带着比较和选择的,但是以我接受到的本科教育,学校教育不会叫你去选择,只会叫人去服从和执行,没有比较和权衡的知识。这种教育也就使得我不会去思考:这个工具需要被学习吗,需要多大程度地被掌握,需要花费多少时间去学习,这些我通通都没有概念。

事实上, set 指令在我使用 linux 生涯的这么多年里,我只在一下 bash 脚本里面见过几次,大多时候都是要了解就看一下 man 就够了。楼上也列出了很多如果管理环境变量的方法,他们都十分之常用和常见。

当然我的意思不是不常用就不需要学, 学得东西多,学得内容巩固扎实是很好的事情。 这句话让我想起了这几年跌宕学习路,感叹一下,希望有用。

========

回到 set 上面来,我没用过这个,不过看着 man 对比一下……

这个指令是 POSIX Programmer’s Manual 那些双下划线开头带下划线的目测是定义的 shell 函数之类的,环境变量在前面。对 set 来说,自定义的 shell 函数和环境变量都会显示出来? = =

认真看 man 啊,里面有说清楚的

1赞

谢谢提醒!我在看鸟哥的 linux 私房菜,至少我在看第一遍的时候是不会忽略任何的知识点的。