加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 为什么env不打印PS1变量?

发布时间:2020-12-14 01:27:05 所属栏目:Linux 来源:网络整理
导读:当我们打印PS1的值时,它被设置为: $echo $PS1[u@h W]$ 我们可以使用env命令打印环境变量.为什么不列出PS1变量? $env | grep PS1# No output here 解决方法 因为PS1不是(通常,在您的特定情况下)环境变量. 在bash实例中设置了许多变量,您可以列出: $set
当我们打印PS1的值时,它被设置为:

$echo $PS1
[u@h W]$

我们可以使用env命令打印环境变量.为什么不列出PS1变量?

$env | grep PS1
# No output here

解决方法

因为PS1不是(通常,在您的特定情况下)环境变量.

在bash实例中设置了许多变量,您可以列出:

$set
BASH=/bin/bash
BASHOPTS=checkwinsize:cmdhist:…
BASH_ALIASES=()
BASH_ARGC=()
.
.
SHLVL=1
SSH_AGENT_PID=853
SSH_AUTH_SOCK=/tmp/ssh-Ofupc03xWIs7/agent.795
TERM=xterm-256color

但其中许多不是环境变量.例如:

$echo "$PPID"
1062

$env | grep PPID

您可以使用export将变量添加到环境中.所以PS1可以设置为环境变量:

$export PS1
$env | grep PS1
PS1=u@h:w$

并且可以通过使用declare删除其导出标志来取消导出变量(这将保留变量的值,只是不导出):

$declare +x PS1
$env | grep PS1
$echo $PS1
u@h:w$

或者,更彻底地,通过取消变量:

$unset PS1
$env | grep PS1

在bash中,declare可用于打印变量的标志:

$declare -p PS1
declare -- PS1="${debian_chroot:+($debian_chroot)}u@h:w$"

$export PS1

$declare -p PS1
declare -x PS1="${debian_chroot:+($debian_chroot)}u@h:w$"

注意变量导出后的-x设置.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读