[problem help] deepin v23正式版 .profile不起作用?
Tofloor
poster avatar
remyxo
deepin
2024-09-10 10:16
Author

下载了oracle instantclient和oceanbase的客户端obclient,分别放在/opt/oracle/instantclient_19_24和/opt/oceanbase/obclient目录下,权限没有问题,在~/.profile最下面增加了几行环境变量,如图。但是重启后环境变量没有生效!一个也没有生效!而且,.profile是会判断用户家目录下是否有bin目录,如果有,也会加入PATH,但我在家目录下创建了bin目录,并且把脚本和可执行程序拷贝到bin下,PATH也没有加入bin路径。但是执行source ~/.profile或者 . ~/.profile又是可以生效的,就是终端启动不能自动加载。

以前是好好的。不知道是我哪里配置错误了,还是正式版的bug?请专家指正。

截图_选择区域_20240910101526.png

如图,前面两段if语句是.profile原来自带的,判断是否有bin目录,如果有,就加入PATH。ORACLE_HOME这一行起是我后加的,都没起作用。

Reply Favorite View the author
All Replies
remyxo
deepin
2024-09-10 10:22
#1
# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
 
看了家目录下没有 .bash_profile 和 .bash_login 文件。
Reply View the author
xclimbing
deepin
2024-09-10 10:32
#2

你可以在~/.bashrc中加入执行.profile的语句, 我确认.bashrc是肯定会被执行的。你在最后加上一条:source ~/.profile

Reply View the author
假设这是一个与用户名相似的昵称
deepin
2024-09-10 10:35
#3
remyxo
# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
 
看了家目录下没有 .bash_profile 和 .bash_login 文件。

也许是因为这个不是login shell? 可能在ctrl+alt+f3或者ssh那种就会执行了

Reply View the author
remyxo
deepin
2024-09-10 10:41
#4
假设这是一个与用户名相似的昵称

也许是因为这个不是login shell? 可能在ctrl+alt+f3或者ssh那种就会执行了

之前不管是在UOS V20,还是deepin 20.9,还是V23非正式版,都是可以的,我一直是这么用的。不知道这是不是V23正式版的bug?反正Linux蛮乱混的。

(我在麒麟桌面OS V10上也是这么写在.profile文件里,就可以,唯一不起作用的是LD_LIBRARY_PATH环境变量,麒麟下必须用ldconfig加载动态链接库目录,否则GUI应用无法找到动态链接库,麒麟工程师说麒麟桌面环境屏蔽了D_LIBRARY_PATH)。

Reply View the author
假设这是一个与用户名相似的昵称
deepin
2024-09-10 11:00
#5
remyxo

之前不管是在UOS V20,还是deepin 20.9,还是V23非正式版,都是可以的,我一直是这么用的。不知道这是不是V23正式版的bug?反正Linux蛮乱混的。

(我在麒麟桌面OS V10上也是这么写在.profile文件里,就可以,唯一不起作用的是LD_LIBRARY_PATH环境变量,麒麟下必须用ldconfig加载动态链接库目录,否则GUI应用无法找到动态链接库,麒麟工程师说麒麟桌面环境屏蔽了D_LIBRARY_PATH)。

image.png

刚才试了一下,在终端里是/bin/bash,在ctrl+alt+f3里是-bash,结合文件开头的注释,我觉得现在这个应该是feature,不是bug

但具体是不是,我得找个官方人员来:@deepin小助手

Reply View the author
remyxo
deepin
2024-09-10 11:44
#6
假设这是一个与用户名相似的昵称

image.png

刚才试了一下,在终端里是/bin/bash,在ctrl+alt+f3里是-bash,结合文件开头的注释,我觉得现在这个应该是feature,不是bug

但具体是不是,我得找个官方人员来:@deepin小助手

按照大部分文档的说法,.profile或.bash_profile只在登录时被调用一次,一般用于设置环境变量等不变化的内容,而.bashrc 是在每次开启终端时都会调用(例如点击状态栏的终端图标),一般用来设置别名、函数等。

我都是按照这个规定来设置的,以前20.9和UOS也是这么设置的,怎么23变了,官方权威解释一下?

Reply View the author
neko
deepin
Ecological co-builder
2024-09-10 11:51
#7

image.png

Reply View the author
remyxo
deepin
2024-09-10 12:18
#8
neko

image.png

好吧,既然.profile会默认调用.bashrc,我把所有函数、别名、环境变量都放到.bashrc算了。

Reply View the author
观摩
deepin
2024-09-10 14:26
#9
remyxo

好吧,既然.profile会默认调用.bashrc,我把所有函数、别名、环境变量都放到.bashrc算了。

一直都是把alias 之类的写在 ~/.bashrc 里面

Reply View the author
xuwentang
deepin
2024-09-10 15:05
#10

debian系统的问题,debian系统登陆时会执行~/.xsessionrc 文件。在用户目录下 创建 ~/.xsessionrc 文件,在其中加载.profile文件(添加,“. $HOME/.profile” 这个行)

Reply View the author
兰蔻
deepin
2024-09-10 15:47
#11

这个应该是 dash 的问题,跟 bash 无关。一些 Debian 系的发行本会将 /bin/sh 链接到 dash ,而非 bash 。当系统登录并由 sh(这时链接到 dash) 来执行初始化配置时,Debian 和 Ubuntu 在如何处理 ~/.profile 方面有所不同:Debian 默认不加载~/.profile ,而 Ubuntu 默认加载。我猜 deepin 应该延续了 Debian 的做法,所以,系统登录时没有加载 ~/.profile 。

你可以把 /bin/sh 链接到 bash ,其实,由 bash 来执行系统初始化配置,速度也没慢多少。

Reply View the author
bingoct
deepin
2024-09-12 14:17
#12
xuwentang

debian系统的问题,debian系统登陆时会执行~/.xsessionrc 文件。在用户目录下 创建 ~/.xsessionrc 文件,在其中加载.profile文件(添加,“. $HOME/.profile” 这个行)

cat ~/.xsessionrc 
# patch for deepin/uos
if [[ -f "$HOME"/.profile ]];then
  . $HOME/.profile
fi

tail -n 3 /etc/os-version 
MajorVersion=23
MinorVersion=23
OsBuild=31038.101

不管用啊。

比如在 vscode 里,可以设置终端启动参数 -l 来实现登录态。 deepin 默认的终端有这个吗。

Reply View the author