【问题标题】:bash/cygwin/$PATH: Do I really have to reboot to alter $PATH?bash/cygwin/$PATH:我真的必须重新启动才能更改 $PATH 吗?
【发布时间】:2010-11-10 12:15:20
【问题描述】:

我想使用安装在 cygwin 下的 Python,而不是直接安装在 WinXP 下的 Python,所以我编辑了 ~/.bashrc 并获取了它。没有改变。我尝试了其他的东西,但我没有以任何方式改变 $PATH 。所以我重新启动了。啊哈;现在 $PATH 已经变成我想要的了。

但是,谁能解释为什么会这样?通过 cygwin(和 bash)对环境(及其变量)所做的更改只有在重启后才会生效?

(这是经营铁路的任何方式吗?)(这个问题不太可能赢得任何分数,但我很好奇,而且我也厌倦了翻阅在这一点上没有帮助的文档。)

【问题讨论】:

  • 您使用了什么确切的命令来更改 $PATH?
  • 我尝试了几种方法。编辑 ~/.bashrc: PYTHON=/usr/bin/python.exe 而不是 /cygdrive/c/Python/etc/etc PATH=${PYTHON}:${PATH} then % source ./bashrc 当那没有工作,我尝试从命令行修改 ${PAth},甚至将其清除并重建:没有效果。

标签: python bash path cygwin reboot


【解决方案1】:

试试:

PATH="${PATH}:${PYTHON}"; export PATH

或者:

export PATH="${PATH}:${PYTHON}"

引号会保留目录名称中没有的空格和换行符。我重复“不要”

如果要更改当前环境和任何后续进程的路径,请使用类似于上述任一命令的内容;它们是等价的。

如果您想在下次启动 Bash 时更改路径,请编辑 ~/.bashrc 并添加上述之一(例如)或编辑您在此处找到的现有 PATH 设置命令。

如果您想同时影响当前环境和任何后续环境(即具有即时和“永久”影响),请编辑 ~/.bashrc 并执行以下操作之一:键入上面显示的前两种形式之一 或获取~/.bashrc 文件。有时,您可能不想进行采购,例如,如果它会撤消您当前正在使用的一些临时事物,例如将其他一些变量设置为不同于 ~/.bashrc 将它们设置(重置)它们。

我认为您不必担心哈希,除非您正在做一些认真的重新安排或添加一些系统实用程序的本地替换。

【讨论】:

  • 好吧,如果我需要更多证据,这表明我对 bash 有多么不自在。我需要做什么?源、散列和导出一直按这个顺序?
  • 你失去了我。我要保留不存在的空白?或者您是说“坚持使用 *NIX 命名约定”? (我总是这样做;我对文件系统名称中的空格感到恐惧——甚至不喜欢连字符。)
  • 在我的 cygwin 系统上,要在当前 shell 会话中修改 $PATH,我需要执行命令的第二种形式。因此,如果您将 export PATH="${PATH}:{$PYTHON}" 添加到您的 .bashrc 中,它应该在您每次登录时都可以使用。
  • 保留空格以防它在那里(但不要自己放任何空格永远)。
  • @Tim:命令的第一种形式假定您已经单独设置了变量。我正在编辑我的答案以使其更清晰。
【解决方案2】:

如果您希望您的更改是永久的,您应该修改适当的文件(在这种情况下为 .bashrc)并执行以下操作之一:

  • 重启cygwin窗口
  • source .bashrc(这应该可以工作,即使不适合你)
  • 。 .bashrc(即点 )

但是,在使用 BASH shell 时默认使用 .bashrc,因此如果您使用其他 shell(csh、ksh、zsh 等),那么修改 .bashrc 将不会反映您的更改。

【讨论】:

  • 以上,注意“..bashrc”是“source.bashrc”的bash简写
【解决方案3】:

至少要尝试和排除几件事:

  1. 您是否从 shell 获得了与以下相同的行为? (从我的 cygwin 粘贴,按预期工作。)

    $ 回声 $PATH /usr/local/bin:/usr/bin:/bin $ export PATH=$PATH:/cygdrive/c/python/bin $ 回声 $PATH /usr/local/bin:/usr/bin:/bin:/cygdrive/c/python/bin
  2. 您的 bashrc 是否以与上述类似的方式设置 PATH? (即第二个命令)。

  3. 您的 bashrc 是否包含“源”或“.”随地指挥? (也许它正在寻找另一个覆盖您的 PATH 变量的文件。)

【讨论】:

  • 你好,ars。我今晚已经完成了,但明天再试一次。谢谢。
【解决方案4】:

修改路径变量后可能需要重新初始化 bash 的哈希值:

hash -r

【讨论】:

  • bash 的哈希值?嗯。 Sun 3. IIRC 上“重新散列”的记忆。但我认为'source .bashrc' 会解决这个问题,不是吗?
  • rehash 是 tcsh。 hash -r 用于 bash
猜你喜欢
  • 2022-01-21
  • 1970-01-01
  • 1970-01-01
  • 2016-12-06
  • 1970-01-01
  • 2022-07-07
  • 1970-01-01
  • 2022-08-12
  • 2015-11-03
相关资源
最近更新 更多