我遇到的问题是,每次打开bash时,都会将我带到一个不需要的目录,因此我必须输入命令cd / mnt / c来获取我的PC文件,如下载,文档等。我打开bash时默认设置一个目录?
答案 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
始终已安装。/mnt/c
/mnt/c
不可供任何您不想访问它的人访问 - 您的$HOME
目录将包含.ssh/
必须是私人的。$HOME
目录中的所有文件复制/移动到/mnt/c
。您可以使用
执行此操作usermod --home /mnt/c
或更改/etc/passwd
警告:如果做错,可能会导致您无法登录或使您的帐户容易受到攻击。