私は自分のシステムでユーザーが持つことができるすべてのエイリアスを確認しようとしてきましたが、rootを使用しています。リストするコマンドがありますか?
答え1
エイリアスは、ユーザーがログインしている間にのみ「存在」するため、実際には不可能です。 .profileなどのログインスクリプトがいくつかのエイリアスを定義している場合は、最初のログイン時にそのエイリアスを持つことになりますが、source
他のスクリプトを使用してより多くのエイリアスを定義したり、コマンドラインで定義したりすることもできます。
ただし、各ユーザーが持つエイリアスを一覧表示できます。ログインする瞬間このような:
#! /bin/bash
for user in $(getent passwd | cut -d: -f1) ; do
uid=$(getent passwd "$user" | cut -d: -f3)
if [ "$uid" -ge 1000 ] ; then
ushell=$(getent passwd "$user" | cut -d: -f7)
[ -z "$ushell" ] && ushell='/bin/sh'
echo "aliases for $user:"
if [[ "$ushell" =~ /s?bin/(true|false|sync|ftponly|nologin) ]] ; then
:
elif [[ "$ushell" =~ /s?bin/(t?csh|zsh|s?ash) ]] ; then
su - "$user" $ushell -c 'alias'
elif [[ "$ushell" =~ /s?bin/([bd]ash|m?ksh|sh) ]] ; then
su - "$user" $ushell -c 'alias -p'
fi
echo ; echo
fi
done
これは1000未満のすべてのUIDをスキップします。 Debian システムでは、一般 (つまりシステムではない) ユーザー ID は 1000 から始まります。一部の他のシステムでは、500から始まります。お使いのシステムに合わせて調整してください。
alias
一部のシェルは、引数なしで実行するように指示されたときにエイリアスを一覧表示しない場合があります。私がテストしたすべてのシェル(bash、dash、pdksh、mksh、tcsh、zsh)はこのシェルで動作しますが、そうでないシェルを見つけたら、次のように処理する必要があります。if [ "$ushell" = "/bin/oddshell" ; then ... fi