【问题标题】:Set a directory by default on BASH windows [closed]在 BASH 窗口上默认设置目录 [关闭]
【发布时间】:2017-02-26 23:26:38
【问题描述】:

我遇到的问题是,每次打开 bash 时,它都会将我带到一个不需要的目录,因此我必须键入命令 cd /mnt/c 才能访问我的 PC 文件,例如下载、文档等。怎么做我打开bash时默认设置一个目录?

【问题讨论】:

  • 创建一个.profile.bashrc 并在最后一部分使用 cd 命令。不过,这可能会破坏任何类型的 Open bash here 快捷方式。

标签: windows bash unix


【解决方案1】:

在 Windows 上启动 Bash 的 bash.exe Windows 可执行文件隐式地将 当前 目录设为启动目录。

这意味着您可以简单地修改打开 Bash 的快捷方式文件并更改其 Start in: 字段以在选择的目录中打开 Bash(指定常规 Windows 路径;它会自动翻译成Bash 启动时的/mnt/c-前缀路径)。

  • 警告:官方的Bash on Ubuntu on Windows 快捷方式文件(在开始菜单中)将~ 作为Target: 字段的一部分作为启动目录传递;只需从Target: 中的C:\Windows\System32\bash.exe ~ 值中删除 ~,然后填写Start in: 字段。

当然,如果需要,您可以创建新的快捷方式文件,每个文件都有自己的启动目录。


在文件资源管理器的文件夹上下文菜单中添加Bash Console Here 命令

更新Prerelease build 17666现在带有一个内置的上下文菜单 - 但是,它需要您按住Shift 在右键单击之前 以访问它;如果您希望命令无条件地显示,那么下面的解决方案可能仍然很有趣。

如果您将以下文本保存在 *.reg 文件中并打开(双击)它,系统会提示您将定义导入用户特定的注册表配置单元。 p>

导入后,您会在文件资源管理器的文件夹上下文菜单中找到一个Bash Console Here 命令,当您单击文件夹内的空白区域时也会看到。
选择该命令后,将在该文件夹中打开一个 Bash 控制台窗口。

警告:因为辅助。在调用bash.exe之前必须使用cmd.exe调用来更改目录,控制台窗口将有cmd.exe的图标,并在任务栏中与常规cmd.exe分组。

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\SOFTWARE\Classes\Directory\Background\shell\BashConsoleHere]
@="Bash Console Here"
"Icon"=hex(2):25,00,4c,00,4f,00,43,00,41,00,4c,00,41,00,50,00,50,00,44,00,41,\
  00,54,00,41,00,25,00,5c,00,6c,00,78,00,73,00,73,00,5c,00,62,00,61,00,73,00,\
  68,00,2e,00,69,00,63,00,6f,00,00,00

[HKEY_CURRENT_USER\SOFTWARE\Classes\Directory\Background\shell\BashConsoleHere\command]
@="cmd /c cd \"%V\" && bash.exe"

[HKEY_CURRENT_USER\SOFTWARE\Classes\Directory\shell\BashConsoleHere]
@="Bash Console Here"
"Icon"=hex(2):25,00,4c,00,4f,00,43,00,41,00,4c,00,41,00,50,00,50,00,44,00,41,\
  00,54,00,41,00,25,00,5c,00,6c,00,78,00,73,00,73,00,5c,00,62,00,61,00,73,00,\
  68,00,2e,00,69,00,63,00,6f,00,00,00

[HKEY_CURRENT_USER\SOFTWARE\Classes\Directory\shell\BashConsoleHere\command]
@="cmd /c cd \"%1\" && bash.exe"

或者,您可以使用以下 PowerShell sn-p 创建注册表项:

$null = 0..1 | % {
  $key = New-Item -Force ('HKCU:\Software\Classes\Directory{0}\shell\BashConsoleHere' -f ('', '\Background')[$_])
  $key | New-ItemProperty -Name '(Default)' -Value 'Bash Console Here' -Type String
  $key | New-ItemProperty -Name 'Icon' -Value '%LOCALAPPDATA%\lxss\bash.ico' -Type ExpandString
  $key = New-Item -Force "$($key.PsPath)\command"
  $key | New-ItemProperty -Name '(Default)' -Value "cmd /c cd `"$(('%1', '%V')[$_])`" && bash.exe" -Type String
}

稍后删除条目:

0..1 | % {
  Remove-Item -Recurse -LiteralPath ('HKCU:\Software\Classes\Directory{0}\shell\BashConsoleHere' -f ('', '\Background')[$_])
}

【讨论】:

    【解决方案2】:

    您可能必须创建它,但将此行添加到您的.bashrc 目录中的$HOME(通常为/home/user/):

    cd /mnt/c

    请记住,正如 Jim 所说,“这可能会破坏任何类型的 Open bash here 快捷方式”。

    您可以在此线程中阅读更多相关信息: https://unix.stackexchange.com/questions/140602/how-do-i-start-all-shell-sessions-in-a-directory-other-than-home

    【讨论】:

      【解决方案3】:

      另一种可能性——我必须强调,您真的必须了解自己在做什么,就是将您的$HOME 目录设置为/mnt/c

      你只能这样做

      • /mnt/c总是挂载。
      • 您的 bash 用户拥有对 /mnt/c 的全部读/写/执行权限
      • /mnt/c可供您不希望访问它的任何人访问 - 您的 $HOME 目录将包含 .ssh/必须是私有的。李>
      • 您可以将所有文件从原始$HOME 目录复制/移动到/mnt/c

      您可以使用

      usermod --home /mnt/c
      

      或通过在/etc/passwd中更改您的主目录

      警告:这样做会导致您无法登录,或让您的帐户容易受到攻击。

      【讨论】:

        猜你喜欢
        • 2014-07-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-07
        • 1970-01-01
        • 1970-01-01
        • 2016-12-22
        相关资源
        最近更新 更多