ログイン時にプロンプトが/bin/bashを実行した後のプロンプトとは異なります。
-bash-4.2$ exec bash
bash-4.2$
-
Bashでフロントからリアをどのように取得できますか?一部のコマンド(tcp dumpなど)は元のバージョンでのみ機能します。
-bash-4.2$ tcpdump -i port1 -w /home/user/$HOSTNAME-port1.pcap -c10000 -G300
tcpdump: WARNING: port1: no IPv4 address assigned
tcpdump: listening on port1, link-type EN10MB (Ethernet), capture size 65535 bytes
0 packets captured
0 packets received by filter
0 packets dropped by kernel
-bash-4.2$ exec bash
bash-4.2$ tcpdump -i port1 -w /home/user/$HOSTNAME-port1.pcap -c10000 -G300
tcpdump: port1: You don't have permission to capture on that device
(socket: Operation not permitted)
@ctrl-alt-delorのアップデート
-bash-4.2$ groups
nuage
-bash-4.2$ exec bash
bash-4.2$ groups
nuage
@Mikelのアップデート
bash-4.2$ exec bash -l
bash-4.2$
@Mark Plotnickのアップデート
-bash-4.2$ type tcpdump
tcpdump is aliased to 'sudo /usr/sbin/tcpdump'
-bash-4.2$ exec bash
bash-4.2$ type tcpdump
tcpdump is /usr/sbin/tcpdump
[root@host nuage]# cat /etc/sudoers | grep nuage
[root@host nuage]# exit
bash-4.2$ group
bash-4.2$ groups
nuage
bash-4.2$ whoami
nuage
答え1
質問:実行後、exec bash
デフォルトのログインプロンプトのエイリアスが失われ、次の例のtcpdumpなどの一部のコマンドが期待どおりに機能しなくなります。
-bash-4.2$ tcpdump -i port1 -w /home/user/$HOSTNAME-port1.pcap -c10000 -G300
tcpdump: WARNING: port1: no IPv4 address assigned
tcpdump: listening on port1, link-type EN10MB (Ethernet), capture size 65535 bytes
0 packets captured
0 packets received by filter
0 packets dropped by kernel
-bash-4.2$ exec bash
bash-4.2$ tcpdump -i port1 -w /home/user/$HOSTNAME-port1.pcap -c10000 -G300
tcpdump: port1: You don't have permission to capture on that device
(socket: Operation not permitted)
修理する:私がやったことをして、プロンプトの間でエイリアスがどのように変わるかを調べることができます。
-bash-4.2$ type tcpdump
tcpdump is aliased to 'sudo /usr/sbin/tcpdump'
-bash-4.2$ exec bash
bash-4.2$ type tcpdump
tcpdump is /usr/sbin/tcpdump
sudo tcpdump
次に、通常のスクリプトの代わりにそれを使用するようにスクリプトを変更しますtcpdump
。
または、次のコマンドを実行して元のプロンプトのすべてのエイリアスを復元することもできますexec -a -bash bash
(明らかに推奨されていません。@ctrl-alt-delorの説明を参照)。