我在 Ubuntu 18.04 LTS (Bionic Beaver) 上使用 Bash shell。我想允许用户在 bash 中定义一个环境变量,该变量可以在后续终端实例中使用,以使用该变量设置某些函数的详细程度。
用户需要做什么才能启用和禁用此类功能?重点是用户无需.bashrc
直接更改即可启用或禁用环境变量功能。这些设置应该仅适用于需要此类功能的特定用户。
答案1
要设置变量,您只需设置它即可。例如,假设您有一个 shell 函数,它根据是否设置变量来更改其行为,如下所示:
check_verbosity(){
if [ -n "$VERBOSE" ]; then
echo "Am I verbose? Why yes, indeed I am, my friend!"
else
echo "no"
fi
}
然后,您可以通过相应地设置变量来更改其行为。例如:
$ check_verbosity
no
$ VERBOSE=yes
$ check_verbosity
Am I verbose? Why yes, indeed I am, my friend!
您甚至可以仅通过在启动命令的同时定义变量来为该函数的特定实例设置变量:
$ VERBOSE=yes check_verbosity
Am I verbose? Why yes, indeed I am, my friend!
$ check_verbosity
no
因此,如果您编写需要此变量的函数和脚本,则每个用户都可以根据需要自由设置它。如果他们想让更改永久生效,他们可以将其添加到他们的文件~/.profile
或~/.bash_profile
(如果存在)文件中以始终进行设置:
export VERBOSE=yes
程序对运行环境中设置或未设置的变量做出反应的想法是一个相对常见的习惯用法。例如,对(等等)ls
作出反应LS_COLORS
和grep
作出反应。GREP_COLORS
您会看到许多man
页面都有一个ENVIRONMENT
部分(通常在末尾附近)解释程序编写时要对哪些环境变量做出反应。
答案2
如果我正确理解你的问题,你希望给定的用户(如果他们愿意的话)能够激活详细选项,例如,mv -v
在某些命令上。如果这是正确的,我有两个建议:
- 教您的用户如何使用别名。他们可以按照自己的意愿定义每个命令的参数,包括详细输出。如果他们想要对六个命令进行详细说明,但不想对其他数百个命令进行详细说明,他们可以这样做。如果他们出于某种原因想要运行没有别名的别名命令,他们可以在命令前面加上反斜杠。
- 创建一个
bash_aliases
包含您批准的别名的文件,并将其提供给网络上的每个人。用户在打开终端时获取该文件,或者将source <path>/bash_aliases
其添加到~/.bashrc
.
我无法知道你的 bash 知识有多广,所以我会提供我自己的 bash_aliases 文件举个例子。它对我很有用。