默认情况下在BASH窗口

时间:2017-02-26 23:26:38

标签: windows bash unix

我遇到的问题是,每次打开bash时,都会将我带到一个不需要的目录,因此我必须输入命令cd / mnt / c来获取我的PC文件,如下载,文档等。我打开bash时默认设置一个目录?

3 个答案:

答案 0 :(得分:8)

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

这意味着您只需修改打开Bash的快捷方式文件并更改其Start in:字段以在所选目录中打开Bash (指定常规Windows路径;它会自动生成在Bash启动时转换为/mnt/c - 前缀路径。

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

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

Bash Console Here命令添加到文件资源管理器

中文件夹的上下文菜单中

更新 Prerelease build 17666现在附带了内置的上下文菜单 - 但是,要求您按住右键单击之前移动以访问它;因此,如果您希望命令无条件地显示 ,则下面的解决方案可能仍然有用。 功能

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

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

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

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代码段来创建注册表项:

$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')[$_])
}

答案 1 :(得分:3)

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

cd /mnt/c

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

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

答案 2 :(得分:1)

另一种可能性 - 我必须强调你真的必须了解你正在做的事情,就是将你的$HOME目录设置为/mnt/c

只有

才能执行此操作
  • /mnt/c 始终已安装。
  • 您的bash用户拥有/mnt/c
  • 的总读/写/执行权限
  • /mnt/c 可供任何您不想访问它的人访问 - 您的$HOME目录将包含.ssh/ 必须是私人的。
  • 您可以将原始$HOME目录中的所有文件复制/移动到/mnt/c

您可以使用

执行此操作
usermod --home /mnt/c

或更改/etc/passwd

中的主目录

警告:如果做错,可能会导致您无法登录或使您的帐户容易受到攻击。