铁路超高';重启bash后的存储路径

铁路超高';重启bash后的存储路径,bash,path,mingw,Bash,Path,Mingw,我正在Windows 10上使用MINGW64。 我想使用Heroku命令 如果我做了heroku--version,它会说bash:heroku:command-notfound。 所以我做了PATH=“$PATH:/c/Program Files/Heroku/bin”,Heroku命令开始工作 现在,如果我关闭并重新启动bash,heroku--version仍然不起作用 我如何设定“永远”的道路?感谢AFIK,Windows可以通过控制面板全局地永久设置环境变量,但这意味着它们将应用于所

我正在Windows 10上使用MINGW64。 我想使用Heroku命令

如果我做了
heroku--version
,它会说
bash:heroku:command-notfound
。 所以我做了
PATH=“$PATH:/c/Program Files/Heroku/bin”
,Heroku命令开始工作

现在,如果我关闭并重新启动bash,
heroku--version
仍然不起作用


我如何设定“永远”的道路?感谢AFIK,Windows可以通过控制面板全局地永久设置环境变量,但这意味着它们将应用于所有应用程序,而不仅仅是您将用于bash的那些终端程序

要仅为bash进行设置,您需要了解bash启动时会发生什么(请参阅bash手册页中的“调用”一段):

如果bash作为交互式登录shell执行,则默认情况下,它会处理主目录中的文件
.bash\u profile
文件

如果它是交互式的,但不是登录shell,那么它将处理.bashrc中的文件

如果您仅以shell的形式运行bash,并且最顶层的shell以登录shell的形式启动,那么您可以在.bash_profile中进行路径设置,这样就完成了。由于路径已导出,因此它对所有子进程都可见

如果您遇到这样的情况,即您启动了一个非登录bash,并且父进程中没有bash登录shell,那么安全的方法是将这些定义放在主目录中的一个单独的文件中,并从.bash_profile和.bashrc中获取这些定义。通过这种方式,您可以确保每个bash都能看到这些定义

当然,您不想让每个后续子shell一次又一次地扩展您的路径,因此您需要保护您的路径设置,以便多次应用,例如

if [[ ${path_extended:-no} == no ]]
then
  export PATH=....
  export path_extended=yes
fi

试试这个“但这意味着它们将应用于所有应用程序,而不仅仅是那些你将用于bash的终端程序。”我不在乎所有应用程序是否都能看到heroku。我试过控制面板,但明格还是看不到。或者至少:我加一次,我第一次看到。当我重新启动bash时,我再也看不到它了。我需要在控制面板上再次删除/添加。@markzzz:重新启动bash是什么意思?如果您创建了一个新的终端实例,那么应该再次正确地设置该变量——与bash无关(您可以使用简单的CMD控制台进行验证)。如果情况并非如此,即如果您在控制面板中看到的路径设置消失,则这是一个与Windows相关的问题,而不是与mingw有关。在cmd上,我看到了该路径。它在mingw bash上,不能使用它。我的意思是:
heroku--version
在CMD中工作,而不是在mingw64中,您必须按照我在回答中建议的方式设置路径;但让我困惑的是:我从来没有使用过mingw64,但建议它根本不包含bash的发行版,而是包含一个类似bourne的shell,名为
msys
,因此我不清楚您使用的是什么bash。