Linux操作,su切换用户命令中有无横杠“-”的区别

工作中遇到这样的问题,服务器上需要从root切换至postgreSQL安装用户去启动postgreSQL服务。

切换用户和启动postgreSQL命令如下:

# 切换至pgsql用户
su postgres
# 启动
pg_ctl start

-bash: pg_ctl: command not found

提示pg_ctl命令不存在,但是可以肯定的是之前安装postgreSQL时就是这么启动的,怎么这次不行了呢。

后来了解到原来是su命令的问题,有没有横杠"-"是有区别的。

su - postgres

有横杠login shell:用户切换,更改工作目录,加载所有用户环境配置。

无横杠interactive shell:用户切换,但是工作目录不会切换到该用户所在工作目录,也不会加载该用户设置的环境变量。

"When Bash starts executes the commands in a variety of different scripts.
(1) When started as an interactive login shell: Bash reads and executes
the /etc/profile (if it exists). After reading that file, it looks for
~/.bash_profile, ~/.bash_login, and ~/.profile in that order, and reads
and executes the first one (that exists and is readable).  When a login
shell
exits: Bash reads and executes ~/.bash_logout (if it exists)。

(2) When started as an interactive shell (but not a login shell): Bash reads and executes ~/.bashrc (if it exists)."

时间: 2024-10-16 11:32:27

Linux操作,su切换用户命令中有无横杠“-”的区别的相关文章

linux使用su切换用户提示 Authentication failure的解决方法& 复制文件时,报cp: omitting directory `XXX'

linux使用su切换用户提示 Authentication failure的解决方法:这个问题产生的原因是由于ubtun系统默认是没有激活root用户的,需要我们手工进行操作,在命令行界面下,或者在终端中输入如下命令: sudo passwd Password:你当前的密码 Enter new UNIX password:这个是root的密码Retype new UNIX password:重复root的密码然后会提示成功的信息. 在说明一点,使用su和sudo是有区别的,使用su切换用户需要

linux使用su切换用户提示 Authentication failure的解决方法

刚刚安装的虚拟机,使用的ubtun系统,进如操作系统后,简单地尝试了一下,发现无法使用shutdown命令进行关机,并且无法进行su命令,提示 Authentication failure 这个问题产生的原因是由于ubtun系统默认是没有激活root用户的,需要我们手工进行操作,在命令行界面下,或者在终端中输入如下命令: sudo passwd Password:你当前的密码 Enter new UNIX password:这个是root的密码 Retype new UNIX password:

su切换用户

#查看当前用户 [[email protected] ~]# id uid=0(root) gid=0(root) 组=0(root) [[email protected] ~]# whoami root su  切换用户 -   在切换用户的同时,把用户的环境变量全部切换到那个用户的环境变量下:若不加这个-,就是当前的环境变量下 注:root切换到其他用户下,不需要输入密码:而其他用户切换到root下,是需要输入密码的. # - 加与不加的区别 [[email protected] ~]# s

当 su 切换用户报错:无法设置用户ID:资源暂时不可用

今天在使用su切换用户doiido的的时候,出现了如下报错:# su - doiidosu: 无法设置用户ID: 资源暂时不可用 同时使用SecureCRT等远程SSH工具均无法使用doiido用户连接.查找相关资料,发现是在CentOS 6中,存在/etc/security/limits.d/90-nproc.config文件,此文件限制了普通权限用户的最大线程数,当此用户的最大线程数max user processes到达最高限制数,就无法连接登录.因此在无法减少线程的情况下只能修改此参数,

linux free命令中buffer与cache的区别

linux free命令中buffer与cache的区别 ~$ free total             used           free     shared   buffers     cached Mem:       1025204     981636      43568          0      38244     387808 -/+ buffers/cache:       555584      469620 Swap:      1931256    162

Linux通过su、sudo命令实现用户切换、提权

概述 大多数Linux服务器并不建议用户直接以root用户进行登录.一方面可以大大减少因误操作而导致的破坏,另一方面也降低了特权密码在不安全的网络中被泄露的风险.鉴于这些原因,需要为普通用户提供一种身份切换或权限或权限提升机制,以便在必要的时候执行管理任务.此时就需要借助Linux为我们提供的su.sudo两种命令来提升执行权限. 提权配置的三种方式 1.针对用户 2.针对组 3.针对用户.组.命令的别名 实验目标 1.熟悉su.sudo的用法,熟练使用sudoers相关的配置 2.体验用户切换

Linux su命令参数及用法详解--Linux切换用户命令

建议大家切换用户的时候 使用  su -  root  这样,否则可能发现某些命令执行不了 关于su .su - 及 sudo的区别 请往下看 1.命令作用 su的作用是变更为其它使用者的身份,超级用户除外,需要键入该使用者的密码. 2.使用方式 su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]] 3.参数说明 -f , –fast:不必读启动文件(如 csh.cshrc 等),仅用于csh或tcsh两种

【linux】su和sudo命令的区别

来源:http://www.jb51.net/LINUXjishu/12713.html 一. 使用 su 命令临时切换用户身份 1.su 的适用条件和威力 su命令就是切换用户的工具,怎么理解呢?比如我们以普通用户beinan登录的,但要添加用户任务,执行useradd ,beinan用户没有这个权限,而这个权限恰恰由root所拥有.解决办法无法有两个,一是退出beinan用户,重新以root用户登录,但这种办法并不是最好的:二是我们没有必要退出beinan用户,可以用su来切换到root下进

su 切换用户的提示"This account is currently not available"

su 切换ivalue用户时,提示"This account is currently not available"; 首先进入/etc/passwd文件中是否添加ivalue用户,发现ivalue用户时候存在: cat /etc/passwd | grep ivalue 我们发现发现该用户不允许登录系统,所以导致我们su 切换时候报错 我们将“/sbin /nologin”,改成"/bin/bash"保存 再次切换,切换成功: