WSL——找不到命令
WSL -- Command Not Found
我运行在 PowerShell wsl pipenv run python ~/test.py
中执行以下命令并收到以下错误 /bin/bash: pipenv: command not found
。如果我启动 WSL/Ubuntu,我可以 运行 pipenv run python ~/test.py
并获得成功的输出。在 PowerShell 和 Git Bash 中,我可以 运行 pipenv -h
并获得正确的输出。 WSL 在哪里寻找这个命令?
在相关说明中,当我启动 WSL/Ubuntu 并获得成功输出时,我可以 运行 python ~/test.py
和 python3 ./test.py
。但是在 PowerShell 中,只有 wsl python3 ~/test.py
有效。当我 运行 wsl python ~/test.py
我收到相同的命令未找到错误。我错过了什么?
根据我们的评论交流,问题是 pipenv
可执行文件所在的目录 - /home/<username>/.local/bin/
- 在调用时不在 PATH
环境变量中命令非交互。
这表明它是一个扩展PATH
的初始化文件,在你的情况下它似乎是~/.bash_profile
;要强制显式 bash
调用源文件,必须传递 -l
(--login
) 选项。
您报告以下命令最终对您有效:
bash -l -c "cd ~ && pipenv run python ~/test.py"
注:
-c
的显式调用是 wsl.exe
在向它传递要执行的命令时在幕后执行的操作,尽管没有 -l
(例如 wsl date
变成 bash -c date
).
-c
的使用使得 shell 非 -interactive,这意味着 ~/.bashrc
不是来源任何一个;如果您想要后者,请添加 -i
没有命令(仅执行 wsl.exe
或 bash.exe
),输入交互式 bash
shell,实际上 - 是否使用-l
,因此自动来源~/.bash_profile
(wsl.exe
/bash.exe
使用替代机制请求登录shell:参数数组的第一个条目(您可以使用 echo [=34=]
检查)设置为 -bash
,初始 -
告诉 Bash 开始登录 shell).
另请参阅:谢谢,
Zymotik.
我运行在 PowerShell wsl pipenv run python ~/test.py
中执行以下命令并收到以下错误 /bin/bash: pipenv: command not found
。如果我启动 WSL/Ubuntu,我可以 运行 pipenv run python ~/test.py
并获得成功的输出。在 PowerShell 和 Git Bash 中,我可以 运行 pipenv -h
并获得正确的输出。 WSL 在哪里寻找这个命令?
在相关说明中,当我启动 WSL/Ubuntu 并获得成功输出时,我可以 运行 python ~/test.py
和 python3 ./test.py
。但是在 PowerShell 中,只有 wsl python3 ~/test.py
有效。当我 运行 wsl python ~/test.py
我收到相同的命令未找到错误。我错过了什么?
根据我们的评论交流,问题是 pipenv
可执行文件所在的目录 - /home/<username>/.local/bin/
- 在调用时不在 PATH
环境变量中命令非交互。
这表明它是一个扩展PATH
的初始化文件,在你的情况下它似乎是~/.bash_profile
;要强制显式 bash
调用源文件,必须传递 -l
(--login
) 选项。
您报告以下命令最终对您有效:
bash -l -c "cd ~ && pipenv run python ~/test.py"
注:
-c
的显式调用是wsl.exe
在向它传递要执行的命令时在幕后执行的操作,尽管没有-l
(例如wsl date
变成bash -c date
).-c
的使用使得 shell 非 -interactive,这意味着~/.bashrc
不是来源任何一个;如果您想要后者,请添加-i
没有命令(仅执行
wsl.exe
或bash.exe
),输入交互式bash
shell,实际上 - 是否使用-l
,因此自动来源~/.bash_profile
(wsl.exe
/bash.exe
使用替代机制请求登录shell:参数数组的第一个条目(您可以使用echo [=34=]
检查)设置为-bash
,初始-
告诉 Bash 开始登录 shell).
另请参阅:谢谢, Zymotik.