使用 BASH 脚本将当前路径输出到文本文件

使用 BASH 脚本将当前路径输出到文本文件

我正在尝试将计算机使用的 PATH 输出到一个简单的文本文件。

类似于 echo PATH >PATH.TXT 或 >>PATH.TXT

使用两个 >> 可以工作,但每行都会显示不同的内容,如果我使用单个 >>,它当然会用下一行覆盖前一行。使用 %~dpo >PATH.TXT、%~fo >>PATH.TXT 或甚至 %~nx0 >>PATH.TXT 都无法提供我想要的输出。简而言之,我想将 PATH 放入文本文件中,以便使用批处理文件进行备份,以防我执行诸如 HELP PATH 之类的愚蠢操作,这会完全改变 PATH。

在此先感谢您的帮助。

答案1

你可以PATH使用命令来改变你的:

PATH=/new-path:$PATH

例如,下面是如何正确扩展 PATH 的方法:

$ PATH=/newpath:$PATH
$ echo $PATH
/newpath:/home/rick/bin:/home/rick/.local/bin:/mnt/e/bin:/mnt/e/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/lib/jvm/java-8-oracle/bin:/usr/lib/jvm/java-8-oracle/db/bin:/usr/lib/jvm/java-8-oracle/jre/bin

这只是破坏 PATH 的一种方法(通过省略$前缀):

$ PATH=/brokenpath:PATH
$ echo $PATH
/brokenpath:PATH

如果您弄乱了 PATH,通常您可以简单地关闭终端并重新打开它。

省略$也是您问题中的错误。捕获文本文件的 PATH 的方法是:

echo $PATH > PATH.TXT

要保留 PATH 更改的运行日志,您可以使用:

echo $PATH >> PATH.TXT

PATH 是一个环境变量。要设置该变量,我们使用“PATH=”,但要引用其内容,我们需要使用“$PATH”。


PATH 变量可以在许多地方设置,正如本问答中概述的那样:我的 PATH 变量在哪里设置?要发现哪些文件正在设置 PATH,其中一个答案建议使用:

grep --color -H 'PATH=' ~/.bashrc ~/.profile ~/.bash_profile ~/bash.login \
                     ~/.bash_aliases /etc/bash.bashrc /etc/profile \
                     /etc/profile.d/* /etc/environment 2> /dev/null

在我的计算机上,该命令返回:

/home/rick/.profile:PATH="$HOME/bin:$HOME/.local/bin:$PATH"
/etc/profile.d/apps-bin-path.sh:    export PATH=$PATH:${snap_bin_path}
/etc/profile.d/jdk.sh:export PATH=$PATH:/usr/lib/jvm/java-8-oracle/bin:/usr/lib/jvm/java-8-oracle/db/bin:/usr/lib/jvm/java-8-oracle/jre/bin
/etc/environment:PATH="/mnt/e/bin:/mnt/e/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

答案2

您可以使用以下代码将 PATH 打印到文本文件:

echo $PATH >> PATH.txt

如果您想运行文件来执行此操作,请确保在顶部添加 shebang:

#!/bin/bash
echo $PATH >> PATH.txt

相关内容