运行 /bin/bash 后返回默认登录 shell

运行 /bin/bash 后返回默认登录 shell

登录时的提示符与执行/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 的评论)

相关内容