在WSL bash脚本中将目录更改为Window的用户目录

时间:2019-09-26 00:56:49

标签: bash windows-subsystem-for-linux

我试图编写一个脚本来自动在WSL中安装某些东西,然后将存储库克隆到Windows中的用户主文件夹(例如C:/ Users / Frank /)。

为此,我需要获取Windows用户名(例如Frank)才能知道cd的存放位置。我发现我可以使用cmd.exe /c '<command>'执行Windows命令行命令,并且命令echo %USERNAME%输出Windows用户的用户名。

这是我到目前为止尝试过的:

#!/bin/bash
USER_NAME=`cmd.exe /c 'echo %USERNAME%'`
cd /mnt/c/Users/$USER_NAME
pwd

我收到一个错误,我认为是Windows回车符\r引起的,我猜这是在echo %USERNAME%输出的末尾。

错误: ine 3: cd: $'/mnt/c/Users/Frank\r\r\r': No such file or directory

如何删除输出末尾的所有\r字符?

1 个答案:

答案 0 :(得分:2)

您的代码,已编辑:

#!/bin/bash
UNSANITISED_USER_NAME=`cmd.exe /c 'echo %USERNAME%'`
USER_NAME="${UNSANITISED_USER_NAME//$'\r'}"
cd /mnt/c/Users/$USER_NAME
pwd

它使用某种字符串格式来删除所有来自rici注释here\r字符(而不是tr,在测试中我无法使用)。