标签: environment-variables

什么是 $PWD?(与当前工作目录相比)

所以维基百科(链接)告诉我该命令pwd是“打印工作目录”的缩写,这是有道理的。

但是对于环境变量,“P”必须是打印以外的其他内容的首字母缩写词。

我听到人们谈论“当前工作目录”,这听起来更好,更直观,但环境变量似乎仍然被称为 $PWD,而不是 $CWD。从来没有人说“你检查了打印工作目录变量了吗?”。

我目前正在使用 web 应用程序服务器 uWSGI,运行时它告诉我(在 uWSGI 统计页面上):

"cwd":"/home/velle/greendrinks",
Run Code Online (Sandbox Code Playgroud)

所以他们显然喜欢(更直观的首字母缩写词)cwdover pwd

我想我想弄清楚是我误解了什么,还是只是给环境变量一个不直观的名字?

terminology environment-variables

47
推荐指数
2
解决办法
11万
查看次数

运行 su 时未获取 .bash_profile

例如,我有一个用户user1对其 进行了修改.bash_profile,其中一个更改了PATH,例如:export PATH=/some/place:$PATH。如果我user1su - user1.

但是,如果我尝试通过suas运行命令root,例如:

su -c test.sh oracle
Run Code Online (Sandbox Code Playgroud)

(测试包含echo $PATH

它似乎没有修改PATH(或 root 的PATH,就此而言)。我也试过复制.bash_profile.profile,无济于事。

为什么会这样?

rhel su environment-variables

46
推荐指数
2
解决办法
5万
查看次数

HTTP_PROXY 环境变量的“正确”格式是什么?有盖还是无盖?

http_proxy和都遇到过HTTP_PROXY。两种形式是等价的吗?它们中的一个是否优先于另一个?

http-proxy environment-variables

46
推荐指数
2
解决办法
3万
查看次数

为什么我重新附加时必须在 tmux 中重新设置环境变量?

我主要在 mac 上工作,ssh/tmux 连接到 Linux 机器来完成我的工作。我在 Linux 机器上运行了 ssh-agent。我有

set -g update-environment "SSH_AUTH_SOCK SSH_ASKPASS WINDOWID SSH_CONNECTION XAUTHORITY"

在我的.tmux.conf. 但是,每当我重新连接到此会话时,我都必须运行

tmux setenv SSH_AUTH_SOCK $SSH_AUTH_SOCK
Run Code Online (Sandbox Code Playgroud)

为了$SSH_AUTH_SOCK正确设置新的 tmux 窗口。我宁愿不必这样做。有任何想法吗?

更新

我想我没有很好地解释这一点。这是我在远程机器上打开 shell 的 shell 函数:

sshh () {
    tmux -u neww -n ${host} "ssh -Xt ${host} $*"
}
Run Code Online (Sandbox Code Playgroud)

当TMUX运行此ssh命令,$SSH_AUTH_SOCK没有设置,即使在我的本地环境设置。如果我使用setenv上面的命令将其放入 tmux 的环境中,则一切正常。我的问题是,为什么我必须运行 setenv 命令?

更新 2

更多信息:

当我附加到现有会话时,$SSH_AUTH_SOCK未在 tmux 环境(或全局环境)中设置。

% tmux showenv | grep -i auth_sock
-SSH_AUTH_SOCK
Run Code Online (Sandbox Code Playgroud)

如果我手动设置它,事情会起作用:

% …
Run Code Online (Sandbox Code Playgroud)

shell tmux environment-variables

45
推荐指数
2
解决办法
3万
查看次数

谁设置 $USER 和 $USERNAME 环境变量?

另外,这些变量是否总是与当前登录的用户名匹配(它们在我的 Debian 系统上匹配)?我可以假设它们在其他 Unix(-like) 系统中可用吗?

我也很好奇为什么人们会使用whoami而不是仅仅读取这些变量中的任何一个。

environment-variables

45
推荐指数
4
解决办法
9万
查看次数

究竟什么是环境变量?

我知道这VARIABLE=value会创建一个环境变量,并export VARIABLE=value使其可用于当前 shell 创建的进程。env显示当前的环境变量,但它们住在哪里?什么包含环境变量(或environment,就此而言)?

shell bash environment-variables

45
推荐指数
3
解决办法
4466
查看次数

如何将 sudo 设置为不更改 Ubuntu 中的 $HOME 以及如何禁用此行为?

在 Ubuntu 12.04 上,当我sudo -s的 $HOME 变量没有改变时,如果我的普通用户是regularuser,情况是这样的:

$ cd
$ pwd
/home/regularuser
$ sudo -s
# cd
# pwd
/home/regularuser
Run Code Online (Sandbox Code Playgroud)

我很久以前就放弃了 Ubuntu,所以我不能确定,但​​我认为这是默认行为。所以,我的问题是:

一季度。这是怎么做的?配置在哪里?

Q2。如何禁用它?

编辑: 感谢您的回答,这使事情澄清了一点,但我想我必须添加几个问题,以获得我正在寻找的答案。

Q3。在 Debian 中sudo -s,将 $HOME 变量更改为/root. 从我从答案中得到的信息和man sudoshell 运行的sudo -s是 中给出的那个/etc/passwd,对吗?

第 4 季度。但是,在 Ubuntu 和 Debian 上,/etc/passwd为 root提供的 shell都是/bin/bash. 在任一系统中,就 $HOME 而言,我找不到.profile.bashrc文件的差异在哪里,因此行为sudo -s不同。这有什么帮助吗?

ubuntu sudo environment-variables

45
推荐指数
3
解决办法
4万
查看次数

如何将环境变量传递给 sudo su

我基本上需要这样做:

DUMMY=dummy
sudo su - ec2-user -c 'echo $DUMMY'
Run Code Online (Sandbox Code Playgroud)

这不起作用。如何将环境变量 $DUMMY 传递给 su?-p 不适用于 -l。

linux su sudo environment-variables

45
推荐指数
3
解决办法
9万
查看次数

shell 变量可以有哪些作用域?

我刚遇到一个问题,显示我不清楚 shell 变量的范围。

我试图使用bundle install,这是一个 Ruby 命令,它使用 的值$GEM_HOME来完成其工作。我已经设置了$GEM_HOME,但是在我使用之前,该命令忽略了该值export,如export GEM_HOME=/some/path.

我读到这使变量以某种方式“全局”(也称为环境变量),但我不明白这意味着什么。我了解编程中的全局变量,但不了解不同的程序。

此外,鉴于我设置的此类变量仅适用于当前的 shell 会话,我将如何为守护进程设置它们?

shell 变量可以有哪些作用域?

environment-variables

44
推荐指数
3
解决办法
6万
查看次数

~ 总是等于 $HOME

我知道以前可能有人问过这个问题,但我在 Google 上找不到。

给定的

  • Linux内核
  • 没有改变 $HOME 的配置
  • 猛击

~ == $HOME是真的吗?

shell bash environment-variables home

42
推荐指数
2
解决办法
8415
查看次数

标签 统计

environment-variables ×10

shell ×3

bash ×2

su ×2

sudo ×2

home ×1

http-proxy ×1

linux ×1

rhel ×1

terminology ×1

tmux ×1

ubuntu ×1