IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 我该把我的shell初始化脚本写在哪里?什么又是login shell? -> 正文阅读

[系统运维]我该把我的shell初始化脚本写在哪里?什么又是login shell?

本文解决以下问题:

  • ubuntu配置在系统脚本~/.bash_profile里的环境变量为什么又不生效了?
  • 什么是login shell?什么又是非login shell

前言

起因是为了方便root敲Netronome SDK相关的命令,就想在bash启动脚本里面加上如下内容:

# Netronome SDK
PATH=$PATH:/opt/netronome/bin:/opt/netronome/p4/bin
export PATH

查完发现应该是要加到~/.bash_profile里面,我的目录下并没有这个文件,加了以后发现还是没有生效,只能source ~/.bash_profile ,而且每次切换到该用户都得重新通过source启用;搜索过程就发现这么几个把我绕晕了的问题,今天来好好解决一下:

  1. bash默认的用户个性化脚本到底是哪个文件?~/.bashrc~/.bash_profile~/.profile还是~/.bash_login?更确切来说,我上面那段想加到用户bash启动时执行的脚本应该放在哪个文件?
  2. 什么是login shell?什么又是非login shell?具体来说,我通过ssh远程连接的shell和图形化界面打开的shell有什么区别?

有些博客内容真的很让人糟心,只给一个结论就算了结论还不太对。

我可以保证我的结论是有调研和测试过的,可以回答以上两个问题,放心食用。

但需要注意的是:不同linux发行版对应的文件名可能不太一样,本文在Ubuntu 18下测试

结论

还是一样,先说结论:

  1. login shell可以理解为需要你登录的shell,需要输入用户名、输入密码(软件帮你存储好的也算),比如ssh远程登录;

    非login shell则相反,是无需登录而由某些程序启动的shell,比如你通过su切换的shell、桌面版ubuntu打开的shell(可以理解为你已经登录的用户打开的shell);

    区分两者的一个办法(来自sky凌乱的微笑,sky老师的博客)是在该shell下执行echo $0,如果得到的有-前缀则是login shell,反之不是。

在这里插入图片描述

注:su 可以用 -l 参数使切换为login shell,否则默认是非login shell

  1. 对于login shell来说,会依次查询用户目录下的以下文件~/.bash_profile~/.bash_login~/.profile,找到了就不会再执行后面的配置脚本。

    对于非login shell,则只会按照~/.bashrc执行。

    可以通过在以上文件中加入echo进行测试。

    注:至少是Ubuntu18下,login shell默认只有~/.profile一个配置文件,而且在文件里面默认写了包含~/.bashrc,可以自行查看。

我得到的结论是,这种命令还是放在~/.profile下吧,然后每次通过su切换的时候加上-l参数变为login shell,以保证不管是ssh还是su -l切换到该用户,配置脚本正确执行,也就能正确加载我们的$PATH环境变量。

结语

以上。

简单整理记录了一下,可能还不是很完备,有问题请指出,多谢!

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-05-15 11:45:51  更:2022-05-15 11:46:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 15:36:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码