ユーザーのユーザー名を取得する必要があるプログラムをbashで書いています。
私はwhoami
と呼ばれることを聞いたことがありますが、それが何をするのか、あるいはどのように使うのかわかりません。
現在のユーザー名を取得するためにどのようなコマンドを使用しますか?
コマンドラインで次のように入力します。
echo "$USER"
または
whoami
これらの値を変数に保存するには、
myvariable=$(whoami)
または
myvariable=$USER
もちろん、変数を作る必要はありません。それが$USER
変数の目的なのです。
whoami
の代わりにid -u -n
があります。
id -u
はユーザーIDを返します(例:rootの場合は0)。
私がSolaris 9とLinuxで使ったことのあるハックで、どちらもうまく機能します。
ps -o user= -p $$ | awk '{print $1}'
このスニペットは、現在のEUIDを持つユーザーの名前を印刷します。
注: ここでインタプリタとしてbashが必要です。
Solarisでは、上記の方法で問題があります。
id
は-u
および-n
パラメータを受け付けません(したがって、出力を解析する必要があります)whoami
は存在しません(デフォルト)who am I
は現在の端末の所有者を表示します(EUIDを無視します)$USER
変数は、プロファイルファイルを読み込んだ後にのみ正しく設定されます(例:/etc/profile
)ログインしたユーザーを取得するには、標準のUnix/Linux/BSD/MacOSコマンドlogname
を使用します。これらは信頼性の低いレポーターであるため、これはSudoと同様に環境を無視します。ログインユーザーの名前を常に表示して終了します。この命令は1981年頃から出回っています。
My-Mac:~ devin$ logname
devin
My-Mac:~ devin$ Sudo logname
Password:
devin
My-Mac:~ devin$ Sudo su -
My-Mac:~ root# logname
devin
My-Mac:~ root# echo $USER
root
2つのコマンド
id
は、グループとともにユーザーIDを出力します。フォーマット:uid=usernumber(username) ...
whoami
は現在のユーザー名を与えます
Root(Sudo)権限が必要な場合(スクリプト使用時は通常90%以上)、上記の方法では常に答えとしてroot
が与えられます。
現在の「ログイン」ユーザーを取得するのも同じように簡単ですが、異なる変数$Sudo_UID
と$Sudo_USER
にアクセスする必要があります。
それらは反響することができます:
echo $Sudo_UID
echo $Sudo_USER
または割り当てられた、例えば:
myuid=$Sudo_UID
myuname=$Sudo_USER
Solaris OSでは、このコマンドを使いました。
$ who am i # remember to use it with space.
Linuxでは - 誰かがすでにコメントでこれに答えています。
$ whoami # without space
bash/ksh/sh
などのためにあなたの質問の多くはすぐにどちらかによって答えられます:
man [function]
使用しているシステムのドキュメントを入手する。
あるいは、通常はもっと便利です。google "man function"これは、linuxとunixの間にわずかな違いがある場合には、異なる結果をもたらすかもしれません。
この質問では、シェルに「whoami」と入力してください。
それをスクリプト化するには:
myvar=$(whoami)
現在のユーザのユーザ名は${parameter@operator}
パラメータ展開(Bash 4.4で導入された)を使って純粋なBashで得ることができます。
$ : \\u
$ printf '%s\n' "${_@P}"
:
に格納されている最後の引数を設定することで、一時変数の代わりに$_
組み込み(true
と同義)が使用されます。それをP
演算子を使ったPrompt文字列のように展開します(\u
)。
$USER
は単なる通常の環境変数なので、これは$USER
を使用するよりも優れています。意図的に改ざんされていなくても、まだ間違っている一般的なケースは、ユーザーがログインシェルを起動せずに切り替えられた場合です(su
のデフォルト)。
ほとんどのLinuxシステムでは、コマンド行にwhoamiと入力するだけでユーザーIDが提供されます。
ただし、Solarisでは、以下のコマンドでログインしたユーザーのUIDを確認して、ユーザーIDを確認する必要があります。
echo $UID
UIDがわかったら、そのUIDを/ etc/passwdと照合してユーザーを見つけます。
cat /etc/passwd | cut -d":" -f1,3