【问题标题】:WSL hide /mnt/c/Users/WSL 隐藏 /mnt/c/Users/
【发布时间】:2018-10-09 14:15:11
【问题描述】:

可以使用 WSL (Ubuntu) 在我的终端(VS Code 和 Hyper)中查看更短的路径。在 Ubuntu 之上,我安装了 zsh。目前,我正在使用 git bash 和路径看起来 Lukas@Y50-70 ~/Coding 但在 Ubuntu 中,我有类似 lukas@Y50-70 /mnt/c/Users/Lukas/Coding 的东西。当我在另外 2 个左右的文件夹中有一个项目并且我的分支名称很长时,有一整行不必要的信息(对我来说)很烦人。 这是 Ubuntu 和 git bash 的比较: 谢谢

【问题讨论】:

    标签: windows git ubuntu windows-10 windows-subsystem-for-linux


    【解决方案1】:

    我能够使用命名目录来解决这个问题 - 通过将此行添加到您的 ~/.zshrc 文件中

    hash -d c=/mnt/c
    

    您会在提示符中看到“~c/”,而不是“/mnt/c/”,我认为这更好。

    这与为目录设置别名的效果相似,但名称会反映在路径的显示方式中。

    作为额外的奖励,您可以随时通过键入 ~c 切换到该目录

    【讨论】:

      【解决方案2】:

      检查zsh installation guide under WSL 是否有帮助(来自neurogenesis):

      1. 安装zshsudo apt-get install zsh
      2. bash.exe 是 WSL / linux 子系统的入口点。您必须修改 Windows 快捷方式以指定 bash -c --login 或将 ~/.bashrc 修改为 exec /bin/zsh 以正确加载不同的 shell。
        不咨询/etc/passwd,因为它不是一个完整的登录过程。一定要设置你的SHELL env var。详情请见#846
      3. 在开始安装之前修复您的umask,否则像 zsh 这样的工具会报错。
        具体来说,“group”和“other”权限将拥有与所有者相同的权限。这会导致 zsh 的 compauditcompinit 失败(两者都与命令完成有关)。
        有关详细信息,请参阅#352umask 022 可以添加到您的~/.bashrc

      注意:这应该在尝试安装 zsh 插件管理器(如 antigen)之前完成(否则 git 克隆会出现目录/文件权限问题)。
      您也应该在安装 RVM 或 rbenv 之前执行此操作。

      我最终在~/.bashrc 的顶部插入了几行,如下所示:

      # ~/.bashrc: executed by bash(1) for non-login shells.
      # see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
      # for examples
      
      ## Fix missing umask value
      umask 022
      
      ## Launch Zsh
      if [ -t 1 ]; then
        cd $HOME
        export SHELL=/bin/zsh
        exec -cl $SHELL
      fi
      

      Issue 846(第 2 点提到)包括the comment

      一个正常的-c zsh 符号链接在我错误的目录中打开,但我设法使用它(注意波浪号):

      C:\Windows\System32\bash.exe ~ -c /bin/zsh
      

      另见“How to Use Zsh (or Another Shell) in Windows 10”。

      【讨论】:

      • 我不明白这是如何回答这个问题的,但也许我的阅读方式与你的不同。我认为问题是关于 PS1 包括完整的当前目录路径。
      • @hvd 完全正确:我希望通过这些设置,$HOME 将被识别为 ~。
      • 但默认的$HOME 不是/mnt/c/Users/...。 OP 不在 $HOME 的子目录中。
      • 这是个坏主意,因为/mnt/c/... 没有 POSIX 语义。这可能会破坏在$HOME 中存储某些类型文件的程序。
      • @hvd 同意。我会等待 OP 的反馈以了解更多信息。
      【解决方案3】:

      我知道这并不是您所希望的解决方法。我正在寻找解决同样的问题。提示太长了,导致我的一些命令换行到下一行。在看到有关 VonC 答案的 cmets 后,我决定保留下一个最佳解决方案。

      我在 ~/.bashrc 文件中所做的是:

      if [ "$color_prompt" = yes ]; then
          PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\n\$ '
      else
          PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\n\$ '
      fi
      

      我在\$ 之前添加了一个\n

      所以当我在我的 Windows 主文件夹中时,它看起来像这样

      ryan@DESKTOP-RSKAA4F:/mnt/c/Users/ryank
      $
      

      然后我开始在$ 之后输入我的命令。它占用了更多的垂直空间,但至少我不必为了避免文本换行而最大化我的终端窗口。

      【讨论】:

        【解决方案4】:

        在我看来,在启动终端会话后仅运行“cd”,就会将提示重新定位为正常的“/home/(user)”

        应该不需要安装 zsh 或其他任何东西。无论如何它对我有用。

        在从 Windows 的根文件夹启动会话时,似乎也能解决问题。

        我的会话保持在下面

        C:\vms

        样本:

        cd -d C:\vms\minikube\ubu_jenkinsX\rootfs
        C:\vms\minikube\ubu_jenkinsX\rootfs>wsl -d ubu_jenkinsX
        

        您的数据可能位于本地数据中您的用户资料下。搜索 rootfs 文件夹

        【讨论】:

          【解决方案5】:

          您的 WSL 提示显示如此长的路径的原因是您实际上不在您的主目录中。你看,WSL 有自己独立于 Windows 的虚拟文件系统,并且 Windows 路径(如你的C:\Users\Lukas\...)存储在/mnt/c/Users/Lukas/... 下。您的 WSL 主目录将是 /home/Lukas(因为您的 WSL 用户名是大写的),但当然,这不是您的项目所在的位置。

          fish shell 有一个prompt_pwd 函数,可以缩短到类似这样的路径:

          0 ---- /m/c/U/L/Documents cd Something
          0 ---- /m/c/U/L/D/Something prompt_pwd
          /m/c/U/L/D/Something
          

          这是你感兴趣的东西吗?您可以将the function 移植到 Bash,或者只切换到 Fish,或者只显示当前目录名称而不是路径。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2020-08-18
            • 2011-01-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多