SUDO_COMMAND
là một biến môi trường được thiết lập sudo
chỉ trong môi trường của quy trình được bắt đầu bởi nó (và được kế thừa bởi bất kỳ quy trình con nào). Nếu bạn chạy sudo some-command arg1 arg2
, sau đó SUDO_COMMAND
sẽ chứa đường dẫn tuyệt đối đến some-command
và arg1 arg2
. Nếu bạn đã chạy sudo -s
hoặc sudo -i
, thì biến sẽ được đặt thành shell đã được bắt đầu. Trong mọi trường hợp, bạn có thể sẽ không thấy nó bên ngoài cây quy trình bắt đầu bằng sudo
.
Ví dụ:
$ sudo sh -c 'echo $SUDO_COMMAND'
/bin/sh -c echo $SUDO_COMMAND
Hoặc là:
$ sudo env
HOME=/home/muru
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
TERM=xterm-256color
LANG=en_US.UTF-8
LC_NUMERIC=en_GB.UTF-8
LC_TIME=en_GB.UTF-8
LC_MONETARY=en_GB.UTF-8
LC_PAPER=en_GB.UTF-8
LC_NAME=en_GB.UTF-8
LC_ADDRESS=en_GB.UTF-8
LC_TELEPHONE=en_GB.UTF-8
LC_MEASUREMENT=en_GB.UTF-8
LC_IDENTIFICATION=en_GB.UTF-8
MAIL=/var/mail/root
LOGNAME=root
USER=root
USERNAME=root
SHELL=/bin/bash
SUDO_COMMAND=/usr/bin/env
SUDO_USER=muru
SUDO_UID=1000
SUDO_GID=1000
Tôi nhận thấy rằng thông tin đến theo thứ tự
Tôi không biết đó là lệnh bạn đang sử dụng, nhưng bạn không thể dựa vào đầu ra của set
, declare
, env
hoặc printenv
là theo một trật tự.