理解Linux中Shell初始化文件和用户Profiles文件

Linux是一个多用户、实时共享的操作系统,意味着不止一个用户可以登录同一个系统。系统管理员通过任务管理来分配不同用户的权限,比如安装、升级、卸载应用程序,运行编译程序,文件查看、编辑等等。 Linux允许通过两种主要方式来创建用户环境:系统级(全局)和用户级(个人)。一般情况下,Linux系统都会运行基本shell程序,当用户登录成功后shell会在初始化时根据某些文件开创建环境。 Linux中的Shell初始化 当Shell被调用时,会有一些初始化/启动文件被启用,它们的主要作用是为shell本身或用户设定运行环境,包含一些函数、 变量、别名等等。 Shell可以读取以下两种初始化文件: 系统级启动文件 – 包含一些应用于户所有用户的全局配置,一般存在于**/etc**目录中,如 **/etc/profiles** 、**/etc/bashrc** 或者 **/etc/bash.bashrc**。 用户级启动文件 – 包含一些应用于单用户的配置文件,一般存放在各个用户目录,这些配置可以覆盖系统级全局配置,如**.profiles**、 **.bash_profile**、 **.bashrc** 和 **.bash_login**. Shell存在三种调用模式: 1. 交互式登录Shell 当用户成功登录系统后调用该Shell,使用**/bin/login**登录,随后读取**/etc/passwd**文件。 当启动交互式shell后,将读取**/etc/profile**文件以及特定的用户文件**~/.bash_profile** login as: pi pi@pi.raspi.in's password: The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law.

Read More

修复树莓派PATH变量

使用lnmp一键工具安装完nmp后,重启进入系统就提示bash command not found 然后试了试service,who等命令也无法使用 只有最基本的系统命令ls,cat等可以用 看来安装lnmp后,我的PATH变量被动了 先临时修改下PATH,便于后面操作 export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:$PATH 然后检查~/.profile,/etc/profile是否存在,存在 检查其中的PATH赋值是否异常 经过排查,发现/etc/profile中的PATH赋值异常,修改之重启OK! 在此分享正确的原始~/.profile和/etc/profile文件 ~/.profile 内容 # ~/.profile: executed by the command interpreter for login shells. # This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login # exists. # see /usr/share/doc/bash/examples/startup-files for examples. # the files are located in the bash-doc package. # the default umask is set in /etc/profile; for setting the umask # for ssh logins, install and configure the libpam-umask package.

Read More

Linux下查看修改PATH

什么是PATH? 要搞清什么是PATH,应该先搞清什么是环境变量? 在计算机中,如果需要运行一个软件,那么我们就要找到它所在的位置,但是每次运行程序时如果都要进入到相应目录,那么显然是很繁琐的。于是就有了环境变量,环境变量就是一个系统参数,里面记录了一些目录,运行软件的时候,相关的程序将会按照该目录寻找相关文件。 而在Linux中,系统会有一个默认的PATH环境变量,里面记录了系统级的相关命令目录,比如当我们输入ls、cd、pwd等命令时,我们不需要指定它们所在的目录,因为包含这些命令的系统目录已经写入PATH参数,因而方便我们调用。 查看PATH 在linux中,可以使用export命令来查看所有环境变量,如下: pi@raspi:~$ export declare -x HOME="/home/pi" declare -x LANG="en_GB.UTF-8" declare -x LOGNAME="pi" declare -x MAIL="/var/mail/pi" declare -x OLDPWD declare -x PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/home/pi/bin" declare -x PWD="/home/pi" declare -x SHELL="/bin/bash" declare -x SHLVL="1" declare -x SSH_CLIENT="101.135.216.146 28249 22" declare -x SSH_CONNECTION="101.135.216.146 28249 192.168.1.111 22" declare -x SSH_TTY="/dev/pts/1" declare -x TERM="xterm" declare -x USER="pi" 使用echo来查看单独的环境变量 pi@raspi:~$ echo $PATH /bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/home/pi/bin 我们可以看到,以上PATH值包含了一些系统命令的目录,而这些目录都用:隔开。 修改PATH 我们可以使用export命令来添加目录,如下: export PATH=/mydoc:$PATH 以上命令在原有的PATH前添加了/mydoc这个目录,设置完成后的PATH值如下: pi@raspi:~$ echo $PATH /mydoc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/home/pi/bin 以上方法修改PATH值,在终端退出后就会失效,因此建议通过修改/etc/profile来设定PATH

Read More