FreeBSD csh/tcsh导出Shell变量

时间:2020-01-09 10:38:32  来源:igfitidea点击:

如何在FreeBSD操作系统下导出tcsh/csh shell变量?

tcsh是Berkeley UNIX C shell csh的增强但完全兼容的版本。
它是一种命令语言解释器,可用作交互式登录shell程序和shell程序脚本命令处理器。
它包括命令行编辑器和许多其他功能。
本教程显示如何在Linux或类似Unix的操作系统上使用命令行选项导出csh或tcsh变量。

FreeBSD显示当前环境变量

执行以下命令以在tcsh或csh下打印环境变量的当前名称和值:

setenv

输出示例:

SHELL=/usr/local/bin/bash
TERM=xterm
SSH_CLIENT=10.10.29.66 37484 22
SSH_TTY=/dev/ttyp2
USER=root
PAGER=more
FTP_PASSIVE_MODE=YES
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/root/bin
MAIL=/var/mail/root
BLOCKSIZE=K
PWD=/root
SHLVL=2
HOME=/root
LOGNAME=root
SSH_CONNECTION=10.10.29.66 37484 10.24.116.2 22
_=/bin/csh
HOSTTYPE=FreeBSD
VENDOR=unknown
OSTYPE=FreeBSD
MACHTYPE=unknown
GROUP=wheel
HOST=vps.theitroad.com
REMOTEHOST=10.10.29.66
EDITOR=vim

导出shell变量

要导出并设置新的环境变量,请执行:

setenv name value
setenv EDITOR /usr/bin/vim

您需要将所有环境变量添加到~/.cshrc文件csh资源脚本中,并在每个Shell执行开始时读取。
这是我的示例.cshrc文件:

alias h         history 25
alias j         jobs -l
alias la        ls -a
alias lf        ls -FA
alias ll        ls -lA

# A righteous umask
umask 22

set path = (/sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin /usr/local/bin $HOME/bin)

setenv  EDITOR  vim
setenv  PAGER   less
setenv  BLOCKSIZE       M

if ($?prompt) then
        # An interactive shell -- set some stuff up
        set prompt = "`/bin/hostname -s`# "
        set filec
        set history = 100
        set savehist = 100
        set mail = (/var/mail/$USER)
        if ( $?tcsh ) then
                bindkey "^W" backward-delete-word
                bindkey -k up history-search-backward
                bindkey -k down history-search-forward
        endif
endif

常用的tcsh环境变量列表

当进程开始时,通过execve()调用可以使用称为环境的字符串数组。
按照惯例,这些字符串的格式为name = value。
各种命令使用以下名称

  • BLOCKSIZE:几个命令使用的块单位的大小,最著名的是df,du和ls。 BLOCKSIZE可以通过指定数字以字节为单位指定,通过指定数字后跟K或k以千字节为单位指定,通过指定数字后跟M或m等以兆字节为单位指定。
  • COLUMNS:用户在终端的列位置上首选的宽度。诸如ls之类的实用程序以及使用它来将输出格式化为列的实用程序。
  • EDITOR:默认的编辑器名称。
  • EXINIT:ex和vi读取的命令的启动列表。
  • HOME:用户登录目录,通过从密码文件/etc/passwd登录设置。
  • LANG:该变量将所有使用setlocale的程序配置为使用指定的语言环境,除非设置了LC_ *变量。
  • MAIL:用户邮箱的位置,而不是/var/mail中的默认邮箱,由mail,sh和许多其他邮件客户端使用。
  • PAGER:默认的分页程序。 mail,man,ftp等使用此变量指定的程序来显示比当前显示更长的信息。
  • PATH:查找可执行文件时,目录顺序,以冒号分隔,由csh,sh,system,execvp等搜索。最初通过登录将PATH设置为/usr/bin:/bin。
  • PRINTER:lpr,lpq和lprm使用的默认打印机的名称。
  • PWD:当前目录路径名。
  • SHELL:用户登录shell的完整路径名。
  • TERM:要为其准备输出的终端的种类。此信息由可能利用特殊终端功能的命令(例如nroff或plot)使用。
  • TMPDIR:用于存储临时文件的目录。大多数应用程序使用/tmp或var/tmp。设置此变量将使他们使用另一个目录。
  • TZ:显示日期时使用的时区。
  • USER:用户的登录名。

tcsh导出变量

语法如下,以42为值定义一个新的tcsh或csh变量,命名为life:

setenv life 42

要打印$life的值,请使用printf命令/echo命令:

echo "$life"
printf "%d\n" $life

现在开始一个新的tcsh会话(儿童tcsh会话):

tcsh

找出孩子是否继承了名为$life的环境变量:

env | grep life
echo "$life"

csh导出变量命令列表

  • envenv | grep var_name设置环境并执行命令,或打印环境变量
  • setenv name value将环境变量名称设置为value并导出
  • echo" $var_name"printf"%FORMAT" $var_name显示环境变量名称的值