(Linux) WSL 通过 VSCode 连接不执行 profile 问题(登录Shell问题)

文章目录

😅问题

起因是我在 /etc/profile 进行了一下配置修改。

在通过命令行启动 WSL 查看是生效的。

但是在 VSCode 连接 WSL 再启动终端进行操作的时候,这个 profile 的配置没有生效。

举例来说:

比如我在 /etc/profile中配置了:

shell 复制代码
# /etc/profile

# 允许生成 core dump
# 并不限制文件大小
ulimit -c unlimited  

直接命令行进去 wsl 查看:

在 VSCode 中连接 WSL 查看:

😅原因

😂Shell 启动方式的不同

原因:Shell 启动方式的不同(登录 Shell vs 非登录 Shell)

场景 Shell 类型
直接命令行进入 WSL 登录 Shell
VSCode 中的 WSL 终端 非登录 Shell

登录 Shell:

  1. /etc/profile→ 系统全局的登录 Shell 配置文件,对所有用户生效。
  2. ~/.bash_profile→ 用户个人的登录配置文件,如果存在则执行,通常会在这里加载 ~/.bashrc。
  3. ~/.bash_login→ 如果 ~/.bash_profile 不存在,则尝试此文件。
  4. ~/.profile→ 如果以上三个都不存在,则尝试此文件(很多用户尤其是使用图形界面的用户会在这里配置环境变量)。

退出登录 Shell 时可能加载 ~/.bash_logout

非登录 Shell:

  1. /etc/bash.bashrc (在某些 Linux 发行版中,如 Debian/Ubuntu)
  2. ~/.bashrc

😂查看 Shell 登录方式

通过 shopt 信息查看

shell 复制代码
shopt | grep login

或者更直接的:

shell 复制代码
echo $0
  • 如果显示 -bash,说明这是一个 登录 Shell
  • 如果显示 bash,说明这是一个 非登录 Shell

😅处理方式

😂source

/etc/profile执行 soruce 指令。

它的作用是 在当前 shell 环境中执行 /etc/profile文件中的命令,而不是启动一个新的子 shell 来执行。

shell 复制代码
source /etc/profile

😂在 ~/.bashrc 中进行配置

~/.bashrc 是一个 用户级别的 Bash shell 配置文件 ,主要用于为 当前用户交互式非登录 Shell 提供个性化的配置。

因此如果要换别的用户登录,则需要重新配置对应的文件。

😂通过 ssh 来连接 WSL

通过 ssh,终端(tty/pty)等形式进入 Linux 是登录 Shell 的。

而在已有 Shell 中执行子 Shell,已登录的图形化界面终端打开新终端,都是非登录 Shell。

😅小结

特性 登录 Shell 非登录 Shell
如何启动 SSH 登录、bash -l、tty 登录、su - username 图形终端、bashsu username
是否读取 /etc/profile ✅ 是 ❌ 否
是否读取 ~/.bash_profile/ ~/.profile ✅ 是(按顺序) ❌ 否
是否读取 ~/.bashrc 通常通过 ~/.bash_profile~/.profile手动加载 ✅ 是(直接加载)
是否读取 ~/.bashrc(直接) ❌ 一般不直接读 ✅ 是
典型用途 登录时初始化环境变量、启动程序 日常命令行操作、终端窗口

⭐END

🌟交流方式

关注我,学习更多C/C++,python,算法,软件工程,计算机知识!

⭐交流方式⭐ |C/C++|算法|设计模式|软件架构-CSDN社区
B站

👨‍💻主页:天赐细莲 bilibili

相关推荐
j7~18 分钟前
【Linux】二十六.线程篇三《Linux多线程编程:线程控制、线程ID以及进程地址空间分布、线程局部存储__thread以及clone系统调用》---详解
linux·运维·服务器·开发语言·c++·多线程编辑·线程的控制
沸速存储8 小时前
整机瓶颈判断思路,自上而下定位卡顿根源
运维·服务器·电脑·内容运营
奈斯先生Vector8 小时前
告别工具碎片化:基于 Nano Banana 全模态 AI 聚合架构搭建“文本-图像-视频”自动化协同生产线
运维·数据库·人工智能·架构·自动化·aigc·音视频
乌萨奇也要立志学C++8 小时前
【Linux】网络基础 从零理解网络通信:局域网、跨网传输与 Socket 预备知识
linux·服务器·网络
DLYSB_10 小时前
AIOps 大模型实战:基于 LangChain 运维 Agent 的根因诊断与现场声光播报闭环
运维·langchain·报警灯
RisunJan10 小时前
Linux命令-slabtop(实时显示内核 slab 缓存信息)
linux
一可米11 小时前
gitHub.com Actions自动化发布
运维·自动化·github
智塑未来12 小时前
证券公司智能运维平台哪个品牌做得好?擎创科技智能运维 2.0 适配券商全场景
运维·科技·区块链
蚰蜒螟12 小时前
从内核源码看Linux启动:chroot、execve与MS_MOVE的协奏曲
linux·服务器·网络
酷可达拉斯13 小时前
自动化运维-ansible配置文件与主机清单
linux·运维·自动化·ansible