Linux ubuntu etc/profile 的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux ubuntu etc/profile 的问题相关的知识,希望对你有一定的参考价值。
我的profile内容如下:
# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
if [ -d /etc/profile.d ]; then
for i in /etc/profile.d/*.sh; do
if [ -r $i ]; then
. $i
fi
done
unset i
fi
if [ "$PS1" ]; then
if [ "$BASH" ]; then
PS1='\u@\h:\w\$ '
if [ -f /etc/bash.bashrc ]; then
. /etc/bash.bashrc
fi
else
if [ "`id -u`" -eq 0 ]; then
PS1='# '
else
PS1='$ '
fi
fi
fi
umask 022
LD_LIBRARY_PATH=./
export LD_LIBRARY_PATH
我想将当前目录当作 so文件的目录。请问错在哪?每次我打开Shell都需要 source /etc/profile 或者. /etc/profile 才能生效如何让它自动生效?
要解决该问题,你要么用绝对路径,要么就自己写一个脚本放到对应的目录,然后在该目录下执行该脚本。 参考技术A 看你用的是bash,可能ubuntu里的bash不会自动source /etc/profile,所以你将那条export命令放在~/.bashrc里试试。另外,LD_LIBRARY_PATH=./ 是不合适的,这里应该用绝对路径。追问
我是程序员,我就是希望我的可执行文件与So等库文件放在一起时SHELL可以自动找到并加载 。我也希望我的当前目录是变化 的,所以我使用相对路径。请问相对路径难道不行吗?
追答你自己的so文件总得放在某个或者某几个固定的path里吧,也就是说不会经常变动,那么你就直接指定绝对路径好了。
bash启动的时候source /etc/profile,这个进程有自己的“默认工作目录”(每个进程都有自己的默认工作目录),但我觉得此时这个工作目录应该不是你的"~"(home path),所以你写的那条export用相对路径不会生效。而当你手动source /etc/profile的时候你是处在合理的工作目录中的(你手动cd就能去合适的目录),所以可以生效。
如果你的so目录有很多个,那么只好在.bashrc里指定多个目录给LD_LIBRARY_PATH变量了(这样也有可能造成混乱,特别是命名重复时)。建议可以临时在shell里用export设置一下,随用随开。
或者你可以看看同目录底下有没有profile.bak,profile.backup,profile.******
如果有,直接重命名覆盖源文件。
以上是关于Linux ubuntu etc/profile 的问题的主要内容,如果未能解决你的问题,请参考以下文章
ubuntu18.04 /etc/resolv.conf 文件问题
Ubuntu中怎么找不到/etc/sysconfig/network?
Ubuntu 解决 /etc/rc.local 开机启动问题
Linux Ubuntu 20.04 —添加开机启动(服务/脚本)
linux(ubuntu)系统中 修改了 /etc/profile 文件后sorce执行后能立即生效,但是当我打开一个新的terminal