如果ZDOTDIR设置为自定义文件夹,则PyCharm zsh shell没有完整的用户路径变量

如果ZDOTDIR设置为自定义文件夹,则PyCharm zsh shell没有完整的用户路径变量,shell,terminal,path,pycharm,zsh,Shell,Terminal,Path,Pycharm,Zsh,我的PyCharm zsh shell没有完整的用户路径环境变量 目前,在PyCharm首选项中,我的shell路径是/bin/zsh 自定义配置在~/.zshenv ZDOTDIR=$HOME/zshconfig 它没有我在我的~/zshconfig/.zprofile或~/zshconfig/.zshrc中添加的任何其他$PATH或别名 此外,尝试从PyCharm将zsh作为交互式登录shell运行也不起作用。(将PyCharm shell路径设置为:/bin/zsh--interactiv

我的PyCharm zsh shell没有完整的用户路径环境变量

目前,在PyCharm首选项中,我的shell路径是
/bin/zsh

自定义配置在
~/.zshenv

ZDOTDIR=$HOME/zshconfig

它没有我在我的
~/zshconfig/.zprofile
~/zshconfig/.zshrc
中添加的任何其他$PATH或别名

此外,尝试从PyCharm将zsh作为交互式登录shell运行也不起作用。(将PyCharm shell路径设置为:
/bin/zsh--interactive--login
不起作用)


如何在PyCharm中运行正常的终端环境?此答案应适用于sh、bash、zsh和fish Shell

问题是PyCharm有一个称为“Shell集成”的选项。
要在“Shell集成”选项上引用其网站:

将终端与系统外壳集成,以正确跟踪会话的命令历史记录,并加载带有所需环境变量的自定义配置文件

Shell集成适用于sh、bash、zsh和fish Shell。

这样做的目的是创建一个定制的shell环境(由PyCharm管理),该环境不源于
~/.zprofile
~/.zshrc

(仅供参考:
~/.zshenv
始终是源代码)

有3个选项可用于添加环境变量。

  • 禁用“Shell集成”选项。这将启动PyCharm无法管理的普通shell(--interactive--login)。此shell将是您的普通用户配置的shell

  • 将环境变量添加到PyCharm。
    在PyCharm终端设置中,您可以添加
    PATH
    :$PATH
    作为环境变量。(每个项目可能需要这样做)

  • 不推荐)在
    .zshenv
    中导出$PATH变量
    export PATH=“:$PATH”
    添加到您的
    .zshenv
    文件中。
    这将应用于任何运行的shell不仅仅是登录和交互式shell。

  • 在我意识到实际问题是PyCharm没有遵循
    ZDOTDIR=$HOME/zshconfig
    之前,这是一个解决办法。我最初的解决方案仍然有效,但这似乎是实际问题

    如果“Shell集成”选项处于启用状态, PyCharm不在$ZDOTDIR之后
    这意味着如果您的
    .zshrc
    位于自定义文件夹中(例如
    ~/zshconfig/.zshrc
    ),PyCharm将不会读取它。PyCharm将只查看默认位置,即
    ~/.zshrc

    我想知道是否有人有办法让PyCharm跟随你的
    $ZDOTDIR

    目前,我更好的解决方案是在我的主目录中创建一个文件,并从我的自定义文件位置获取源文件

    创建PyCharm直接读取的文件
    ~/.zshrc

    # For debugging which file gets sourced
    #echo "interactive shell (~/.zshrc)"
    
    # PyCharm reads this file directly, doesn't follow "ZDOTDIR=$HOME/zshconfig"
    # If this file gets read directly, source my custom location:
    source ~/zshconfig/.zshrc
    

    分别针对
    ~/.zprofile

    好吧,这是我的第三个答案

    ~/.zshenv

    不幸的是,PyCharm不支持“FOO=bar/bin/zsh”符号,因此我们需要一个包装器脚本来启动它

    我们要做的是让PyCharm使用我们定制的
    $ZDOTDIR
    目录。 在主目录中添加文件
    ~/pycharm_zsh.sh
    :将“~/zshconfig”更改为配置的正确路径

    使该脚本可执行:
    chmod+x~/pycharmzsh.sh

    在pycharm中,将“Shell路径”设置为自定义脚本:
    /Users//pycharm_zsh.sh

    我从未使用过pycharm,但似乎你可以。如果你在那里定义一个变量
    pycharm=YES
    ,你就可以在你的zsh启动文件中查询这个变量,并且只有在从pycharm终端运行时才应用某些设置。这些文件从来不是由pycharm本身提供的,而是由zsh启动的,当然,我们可以将参数传递给这个Zsh,以在一定程度上影响启动行为。既然你说
    .zshenv
    被处理了,我们至少可以得出结论,PyCharm至少没有摆弄ZDOTDIR变量,而且由于生成的shell是交互式的,
    .zshrc
    也被源化了。如果你真的认为墨水它不会被来源(这在我看来像一个bug),您总是可以手动获取它。@user1934428这是一个有趣的想法。在PyCharm中设置它,然后在
    .zshenv
    中检查
    PYTCHARM
    。这是真的,手动获取
    .zprofile
    zshrc
    的源代码?@user1934428我在我的Mac上测试了它,默认情况下,
    .zshrc
    不是源代码。也许这只是一个bugOnly当从PyCharm内部运行时?这会很奇怪。否则,我也在Mac上使用zsh,它的工作方式与广告一样。您是如何验证您的.zshrc未被处理的?包装可以写得稍短一些,如
    ZDOTDIR=~/zshconfig/bin/zsh--login--interactive
    。因为
    /bin
    很可能在路径中,y您不需要提供到zsh的绝对路径。由于zsh连接到tty,我想您不需要
    --interactive
    ,因为这应该是默认路径;但这肯定是您最好测试的。
    #!/bin/sh
    export ZDOTDIR=~/zshconfig
    /bin/zsh --login --interactive