svn commit: r268641 - head/usr.sbin/service

Bryan Drewery bdrewery at FreeBSD.org
Wed Jul 16 03:44:07 UTC 2014


On 7/15/14, 9:48 PM, dteske at FreeBSD.org wrote:
>
>
>> -----Original Message-----
>> From: owner-src-committers at freebsd.org [mailto:owner-src-
>> committers at freebsd.org] On Behalf Of Mateusz Guzik
>> Sent: Tuesday, July 15, 2014 12:16 PM
>> To: Bryan Drewery
>> Cc: Devin Teske; src-committers at freebsd.org; svn-src-all at freebsd.org; svn-
>> src-head at freebsd.org
>> Subject: Re: svn commit: r268641 - head/usr.sbin/service
>>
>> On Tue, Jul 15, 2014 at 12:59:05PM -0500, Bryan Drewery wrote:
>>> On 7/14/2014 9:18 PM, Devin Teske wrote:
>>>> Author: dteske
>>>> Date: Tue Jul 15 02:18:55 2014
>>>> New Revision: 268641
>>>> URL: http://svnweb.freebsd.org/changeset/base/268641
>>>>
>>>> Log:
>>>>    Fix an issue with service(8) where utilities such as screen(1) and tmux(1)
>>>>    would behave differently when utilizing rc-script was invoked manually
>> vs.
>>>>    service(8). The issue being that these utilities require the TERM environ
>>>>    variable to be set and service(8) was not passing it down.
>>>>
>>>>    Reported by:	Michael Dexter <editor at callfortesting.org>
>>>>    PR:		bin/191869
>>>>    Reviewed by:	allanjude
>>>>    MFC after:	3 days
>>>>    X-MFC-to:	stable/10, stable/9
>>>>
>>>> Modified:
>>>>    head/usr.sbin/service/service.sh
>>>>
>>>> Modified: head/usr.sbin/service/service.sh
>>>>
>> ==========================================================
>> ====================
>>>> --- head/usr.sbin/service/service.sh	Tue Jul 15 01:03:29 2014
>> 	(r268640)
>>>> +++ head/usr.sbin/service/service.sh	Tue Jul 15 02:18:55 2014
>> 	(r268641)
>>>> @@ -139,7 +139,7 @@ cd /
>>>>   for dir in /etc/rc.d $local_startup; do
>>>>   	if [ -x "$dir/$script" ]; then
>>>>   		[ -n "$VERBOSE" ] && echo "$script is located in $dir"
>>>> -		exec env -i HOME=/ PATH=/sbin:/bin:/usr/sbin:/usr/bin
>> $dir/$script $*
>>>> +		exec env -i HOME=/ PATH=/sbin:/bin:/usr/sbin:/usr/bin
>> TERM="$TERM" $dir/$script $*
>>>>   	fi
>>>>   done
>>>>
>>>>
>>>
>>> Hm, I'm not sure about this. The "behaves differently" is exactly the
>>> reason for service(8). It runs with a clean environment such as the boot
>>> does. Running an rc script without service(8) will give wrong behavior
>>> in many scripts that do not match boot-time behavior.
>>>
>>
>> Indeed, the whole point is to NOT inherit anything from calling process.
>>
>
> If that were the point, then we have an issue. Because as it stands,
> service(8) does _not_ accurately provide the same environment as boot.
>
> Take the following boot script:
>
> dteske at scribe9.vicor.com ~ $ cat /etc/rc.d/foo
> #!/bin/sh
> # PROVIDE: foo
> set > /tmp/termtest
> . /etc/rc.subr
> name=foo
> rcvar=foo_enable
> command="/usr/local/bin/tmux"
> foo_flags="new -s foo ls"
> load_rc_config $name
> run_rc_command "$1"
>
> Now reboot to find the following in /tmp/termtest:
>
> dteske at scribe9.vicor.com ~ $ cat /tmp/termtest
> HOME=/
> ID=/usr/bin/id
> IDCMD='if [ -x /usr/bin/id ]; then /usr/bin/id -un; fi'
> IFS='
> '
> JID=0
> OPTIND=1
> PATH=/sbin:/bin:/usr/sbin:/usr/bin
> PPID=1
> PS1='# '
> PS2='> '
> PS4='+ '
> PS='/bin/ps -ww'
> PWD=/
> RC_PID=19
> SYSCTL=/sbin/sysctl
> SYSCTL_N='/sbin/sysctl -n'
> SYSCTL_W=/sbin/sysctl
> _arg=faststart
> _boot=faststart
> _file=/etc/rc.d/foo
> _rc_conf_loaded=true
> _rc_elem=/etc/rc.d/foo
> _rc_elem_done=' /etc/rc.d/sysctl /etc/rc.d/hostid /etc/rc.d/zvol /etc/rc.d/dumpon /etc/rc.d/ddb /etc/rc.d/initrandom /etc/rc.d/geli /etc/rc.d/gbde /etc/rc.d/encswap /etc/rc.d/ccd /etc/rc.d/swap1 /etc/rc.d/fsck /etc/rc.d/root /etc/rc.d/mdconfig /etc/rc.d/hostid_save /etc/rc.d/mountcritlocal /etc/rc.d/zfs /etc/rc.d/var /etc/rc.d/cleanvar /etc/rc.d/FILESYSTEMS '
> _rc_namevarlist='program chroot chdir flags fib nice user group groups'
> _rc_subr_loaded=:
> accept_sourceroute=NO
> accounting_enable=NO
> allscreens_flags=''
> allscreens_kbdflags=''
> always_force_depends=NO
> amd_enable=NO
> amd_flags='-a /.amd_mnt -l syslog /host /etc/amd.map /net /etc/amd.map'
> amd_map_program=NO
> amd_program=/usr/sbin/amd
> apm_enable=NO
> apmd_enable=NO
> apmd_flags=''
> arpproxy_all=NO
> atm_arps=''
> atm_enable=NO
> atm_pvcs=''
> auditd_enable=NO
> auditd_flags=''
> auditd_program=/usr/sbin/auditd
> auditdistd_enable=NO
> auditdistd_flags=''
> auditdistd_program=/usr/sbin/auditdistd
> autoboot=yes
> background_dhclient=NO
> background_fsck=YES
> background_fsck_delay=60
> bhyve_enable=NO
> bhyve_profiles='virt1 virt2'
> blanktime=300
> bootparamd_enable=NO
> bootparamd_flags=''
> bsdextended_script=/etc/rc.bsdextended
> bsnmpd_enable=NO
> bsnmpd_flags=''
> bthidd_config=/etc/bluetooth/bthidd.conf
> bthidd_enable=NO
> bthidd_hids=/var/db/bthidd.hids
> check_quotas=YES
> chkprintcap_enable=NO
> chkprintcap_flags=-d
> cleanvar_enable=YES
> clear_tmp_X=YES
> clear_tmp_enable=NO
> cloned_interfaces=''
> crashinfo_enable=YES
> crashinfo_program=/usr/sbin/crashinfo
> cron_dst=YES
> cron_enable=YES
> cron_flags=''
> cron_program=/usr/sbin/cron
> cursor=NO
> ddb_config=/etc/ddb.conf
> ddb_enable=NO
> defaultroute_carrier_delay=5
> defaultroute_delay=30
> defaultrouter=172.16.169.2
> devd_enable=YES
> devd_flags=''
> devfs_load_rulesets=NO
> devfs_rulesets='/etc/defaults/devfs.rules /etc/devfs.rules'
> devfs_set_rulesets=''
> devfs_system_ruleset=''
> dhclient_flags=''
> dhclient_program=/sbin/dhclient
> dir=/usr/local/etc/rc.d
> dlv=0
> dmesg_enable=YES
> dummynet_enable=NO
> dumpdev=NO
> dumpdir=/var/crash
> early_late_divider=FILESYSTEMS
> economy_cpu_freq=NONE
> economy_cx_lowest=HIGH
> entropy_dir=/var/db/entropy
> entropy_file=/entropy
> entropy_save_num=8
> entropy_save_sz=2048
> extra_netfs_types=NO
> fec_interfaces=''
> file=/usr/local/etc/rc.d/svnserve
> files='/etc/rc.d/sysctl
> /etc/rc.d/hostid
> /etc/rc.d/zvol
> /etc/rc.d/dumpon
> /etc/rc.d/ddb
> /etc/rc.d/initrandom
> /etc/rc.d/geli
> /etc/rc.d/gbde
> /etc/rc.d/encswap
> /etc/rc.d/ccd
> /etc/rc.d/swap1
> /etc/rc.d/fsck
> /etc/rc.d/root
> /etc/rc.d/mdconfig
> /etc/rc.d/hostid_save
> /etc/rc.d/mountcritlocal
> /etc/rc.d/zfs
> /etc/rc.d/var
> /etc/rc.d/cleanvar
> /etc/rc.d/FILESYSTEMS
> /etc/rc.d/kldxref
> /etc/rc.d/kld
> /etc/rc.d/addswap
> /etc/rc.d/random
> /etc/rc.d/adjkerntz
> /etc/rc.d/atm1
> /etc/rc.d/hostname
> /etc/rc.d/ip6addrctl
> /etc/rc.d/netoptions
> /etc/rc.d/sppp
> /etc/rc.d/ipfilter
> /etc/rc.d/ipnat
> /etc/rc.d/ipfs
> /etc/rc.d/serial
> /etc/rc.d/netif
> /etc/rc.d/devd
> /etc/rc.d/ipsec
> /etc/rc.d/atm2
> /etc/rc.d/pfsync
> /etc/rc.d/pflog
> /etc/rc.d/pf
> /etc/rc.d/stf
> /etc/rc.d/ppp
> /etc/rc.d/faith
> /etc/rc.d/routing
> /etc/rc.d/mroute6d
> /etc/rc.d/nsswitch
> /etc/rc.d/rtsold
> /etc/rc.d/static_ndp
> /etc/rc.d/static_arp
> /etc/rc.d/bridge
> /etc/rc.d/resolv
> /etc/rc.d/route6d
> /etc/rc.d/mrouted
> /etc/rc.d/routed
> /etc/rc.d/defaultroute
> /etc/rc.d/ipfw
> /etc/rc.d/NETWORKING
> /etc/rc.d/netwait
> /etc/rc.d/mountcritremote
> /etc/rc.d/accounting
> /etc/rc.d/ldconfig
> /etc/rc.d/devfs
> /etc/rc.d/ipmon
> /etc/rc.d/mdconfig2
> /etc/rc.d/newsyslog
> /etc/rc.d/syslogd
> /etc/rc.d/watchdogd
> /etc/rc.d/savecore
> /etc/rc.d/archdep
> /etc/rc.d/abi
> /etc/rc.d/SERVERS
> /etc/rc.d/named
> /etc/rc.d/ntpdate
> /etc/rc.d/rpcbind
> /etc/rc.d/nfsclient
> /etc/rc.d/nisdomain
> /etc/rc.d/ypserv
> /etc/rc.d/ypbind
> /etc/rc.d/ypset
> /etc/rc.d/amd
> /etc/rc.d/atm3
> /etc/rc.d/auditd
> /etc/rc.d/auditdistd
> /etc/rc.d/tmp
> /etc/rc.d/cleartmp
> /etc/rc.d/dmesg
> /etc/rc.d/hastd
> /etc/rc.d/ipxrouted
> /etc/rc.d/kerberos
> /etc/rc.d/kadmind
> /etc/rc.d/keyserv
> /etc/rc.d/kpasswdd
> /etc/rc.d/nfsuserd
> /etc/rc.d/gssd
> /etc/rc.d/quota
> /etc/rc.d/mountd
> /etc/rc.d/nfsd
> /etc/rc.d/statd
> /etc/rc.d/lockd
> /etc/rc.d/pppoed
> /etc/rc.d/pwcheck
> /etc/rc.d/virecover
> /usr/local/etc/rc.d/stunnel
> /etc/rc.d/DAEMON
> /usr/local/etc/rc.d/svnserve
> /etc/rc.d/apm
> /etc/rc.d/apmd
> /etc/rc.d/bootparams
> /etc/rc.d/hcsecd
> /etc/rc.d/bthidd
> /etc/rc.d/local
> /etc/rc.d/lpd
> /etc/rc.d/motd
> /etc/rc.d/mountlate
> /etc/rc.d/nscd
> /etc/rc.d/ntpd
> /etc/rc.d/powerd
> /etc/rc.d/rarpd
> /etc/rc.d/rctl
> /etc/rc.d/sdpd
> /etc/rc.d/rfcomm_pppd_server
> /etc/rc.d/rtadvd
> /etc/rc.d/rwho
> /etc/rc.d/timed
> /etc/rc.d/ugidfw
> /etc/rc.d/yppasswdd
> /etc/rc.d/LOGIN
> /usr/local/etc/rc.d/rsyncd
> /usr/local/etc/rc.d/p4d
> /usr/local/etc/rc.d/mcwatchdog
> /usr/local/etc/rc.d/git_daemon
> /usr/local/etc/rc.d/dbus
> /etc/rc.d/ypxfrd
> /etc/rc.d/ypupdated
> /etc/rc.d/ubthidhci
> /etc/rc.d/syscons
> /etc/rc.d/sshd
> /etc/rc.d/sendmail
> /etc/rc.d/cron
> /etc/rc.d/jail
> /etc/rc.d/localpkg
> /etc/rc.d/securelevel
> /etc/rc.d/othermta
> /etc/rc.d/nfscbd
> /etc/rc.d/msgs
> /etc/rc.d/moused
> /etc/rc.d/mixer
> /etc/rc.d/inetd
> /etc/rc.d/hostapd
> /etc/rc.d/gptboot
> /etc/rc.d/geli2
> /etc/rc.d/ftpd
> /etc/rc.d/ftp-proxy
> /etc/rc.d/foo
> /etc/rc.d/bsnmpd
> /etc/rc.d/bgfsck'
> firewall_allowservices=''
> firewall_client_net=192.0.2.0/24
> firewall_coscripts=''
> firewall_enable=NO
> firewall_flags=''
> firewall_logdeny=NO
> firewall_logging=NO
> firewall_myservices=''
> firewall_nat_enable=NO
> firewall_nat_flags=''
> firewall_nat_interface=''
> firewall_nologports='135-139,445 1026,1027 1433,1434'
> firewall_quiet=NO
> firewall_script=/etc/rc.firewall
> firewall_simple_iif=ed1
> firewall_simple_inet=192.0.2.16/28
> firewall_simple_oif=ed0
> firewall_simple_onet=192.0.2.0/28
> firewall_trusted=''
> firewall_type=UNKNOWN
> font8x14=NO
> font8x16=NO
> font8x8=NO
> foo_enable=YES
> forward_sourceroute=NO
> fsck_y_enable=NO
> fsck_y_flags=''
> ftpd_enable=NO
> ftpd_flags=''
> ftpd_program=/usr/libexec/ftpd
> ftpproxy_enable=NO
> ftpproxy_flags=''
> gateway_enable=NO
> gbde_attach_attempts=3
> gbde_autoattach_all=NO
> gbde_devices=NO
> gbde_lockdir=/etc
> geli_autodetach=YES
> geli_default_flags=''
> geli_devices=''
> geli_swap_flags='-e aes -l 256 -s 4096 -d'
> geli_tries=''
> gif_interfaces=''
> gptboot_enable=YES
> gssd_enable=NO
> gssd_flags=''
> harvest_ethernet=YES
> harvest_interrupt=YES
> harvest_p_to_p=YES
> hastd_enable=NO
> hastd_flags=''
> hastd_program=/sbin/hastd
> hcsecd_config=/etc/bluetooth/hcsecd.conf
> hcsecd_enable=NO
> hostapd_enable=NO
> hostid_enable=YES
> hostid_file=/etc/hostid
> hostname=scribe9.vicor.com
> ibcs2_enable=NO
> ibcs2_loaders=coff
> icmp_bmcastecho=NO
> icmp_drop_redirect=NO
> icmp_log_redirect=NO
> ifconfig_em0=DHCP
> ike_enable=NO
> ike_flags=''
> ike_program=/usr/local/sbin/isakmpd
> inetd_enable=NO
> inetd_flags='-wW -C 60'
> inetd_program=/usr/sbin/inetd
> ip6addrctl_enable=YES
> ip6addrctl_policy=AUTO
> ip6addrctl_verbose=NO
> ip_portrange_first=NO
> ip_portrange_last=NO
> ipfilter_enable=NO
> ipfilter_flags=''
> ipfilter_program=/sbin/ipf
> ipfilter_rules=/etc/ipf.rules
> ipfs_enable=NO
> ipfs_flags=''
> ipfs_program=/sbin/ipfs
> ipmon_enable=NO
> ipmon_flags=-Ds
> ipmon_program=/sbin/ipmon
> ipnat_enable=NO
> ipnat_flags=''
> ipnat_program=/sbin/ipnat
> ipnat_rules=/etc/ipnat.rules
> ipsec_enable=NO
> ipsec_file=/etc/ipsec.conf
> ipv6_activate_all_interfaces=NO
> ipv6_cpe_wanif=NO
> ipv6_default_interface=NO
> ipv6_defaultrouter=NO
> ipv6_faith_prefix=NO
> ipv6_gateway_enable=NO
> ipv6_ipfilter_rules=/etc/ipf6.rules
> ipv6_ipv4mapping=NO
> ipv6_network_interfaces=auto
> ipv6_privacy=NO
> ipv6_static_routes=''
> ipxgateway_enable=NO
> ipxrouted_enable=NO
> ipxrouted_flags=''
> jail_enable=NO
> jail_list=''
> jail_parallel_start=NO
> jail_set_hostname_allow=YES
> jail_socket_unixiproute_only=YES
> jail_sysvipc_allow=NO
> kadmind5_server=/usr/libexec/kadmind
> kadmind5_server_enable=NO
> kerberos5_server=/usr/libexec/kdc
> kerberos5_server_enable=NO
> kerberos5_server_flags=--detach
> kern_securelevel=-1
> kern_securelevel_enable=NO
> keybell=NO
> keyboard=''
> keychange=NO
> keymap=NO
> keyrate=fast
> keyserv_enable=NO
> keyserv_flags=''
> kldxref_clobber=NO
> kldxref_enable=NO
> kldxref_module_path=''
> kpasswdd_server=/usr/libexec/kpasswdd
> kpasswdd_server_enable=NO
> ldconfig32_paths=/usr/lib32
> ldconfig_insecure=NO
> ldconfig_local32_dirs=/usr/local/libdata/ldconfig32
> ldconfig_local_dirs=/usr/local/libdata/ldconfig
> ldconfig_paths='/usr/lib/compat /usr/local/lib /usr/local/lib/compat/pkg'
> ldconfig_paths_aout='/usr/lib/compat/aout /usr/local/lib/aout'
> linux_enable=NO
> local_rc=' /usr/local/etc/rc.d/dbus /usr/local/etc/rc.d/git_daemon /usr/local/etc/rc.d/mcwatchdog /usr/local/etc/rc.d/p4d /usr/local/etc/rc.d/rsyncd /usr/local/etc/rc.d/stunnel /usr/local/etc/rc.d/svnserve'
> local_startup=/usr/local/etc/rc.d
> log_in_vain=0
> lpd_enable=NO
> lpd_flags=''
> lpd_program=/usr/sbin/lpd
> mcwatchdog_enable=YES
> mixer_enable=YES
> mountd_enable=YES
> mountd_flags=-r
> mousechar_start=NO
> moused_enable=YES
> moused_flags=''
> moused_nondefault_enable=YES
> moused_port=/dev/psm0
> moused_type=auto
> mroute6d_enable=NO
> mroute6d_flags=''
> mroute6d_program=/usr/local/sbin/pim6dd
> mrouted_enable=NO
> mrouted_flags=''
> mrouted_program=/usr/local/sbin/mrouted
> mta_start_script=/etc/rc.sendmail
> named_auto_forward=NO
> named_auto_forward_only=NO
> named_chroot_autoupdate=YES
> named_chrootdir=/var/named
> named_conf=/etc/namedb/named.conf
> named_enable=NO
> named_program=/usr/sbin/named
> named_symlink_enable=YES
> named_uid=bind
> named_wait=NO
> named_wait_host=localhost
> natd_enable=NO
> natd_flags=''
> natd_interface=''
> natd_program=/sbin/natd
> natm_static_routes=''
> netfs_types='nfs:NFS oldnfs:OLDNFS smbfs:SMB portalfs:PORTAL nwfs:NWFS'
> netwait_enable=YES
> netwait_if_timeout=30
> netwait_timeout=60
> network_interfaces=auto
> newsyslog_enable=YES
> newsyslog_flags=-CN
> nfs_access_cache=60
> nfs_bufpackets=''
> nfs_client_enable=NO
> nfs_reserved_port_only=NO
> nfs_server_enable=YES
> nfs_server_flags='-u -t -n 4'
> nfscbd_enable=NO
> nfscbd_flags=''
> nfsuserd_enable=NO
> nfsuserd_flags=''
> nfsv4_server_enable=NO
> nis_client_enable=NO
> nis_client_flags=''
> nis_server_enable=NO
> nis_server_flags=''
> nis_yppasswdd_enable=NO
> nis_yppasswdd_flags=''
> nis_ypset_enable=NO
> nis_ypset_flags=''
> nis_ypxfrd_enable=NO
> nis_ypxfrd_flags=''
> nisdomainname=NO
> nscd_enable=NO
> ntpd_config=/etc/ntp.conf
> ntpd_enable=NO
> ntpd_flags='-p /var/run/ntpd.pid -f /var/db/ntpd.drift'
> ntpd_program=/usr/sbin/ntpd
> ntpd_sync_on_start=NO
> ntpdate_config=/etc/ntp.conf
> ntpdate_enable=YES
> ntpdate_flags=-b
> ntpdate_hosts=time-nw.nist.gov
> ntpdate_program=/usr/sbin/ntpdate
> oldnfs_server_enable=NO
> opensm_enable=NO
> performance_cpu_freq=NONE
> performance_cx_lowest=HIGH
> pf_enable=NO
> pf_flags=''
> pf_program=/sbin/pfctl
> pf_rules=/etc/pf.conf
> pflog_enable=NO
> pflog_flags=''
> pflog_logfile=/var/log/pflog
> pflog_program=/sbin/pflogd
> pfsync_enable=NO
> pfsync_ifconfig=''
> pfsync_syncdev=''
> pfsync_syncpeer=''
> populate_var=AUTO
> powerd_enable=NO
> powerd_flags=''
> ppp_enable=NO
> ppp_mode=auto
> ppp_nat=YES
> ppp_profile=papchap
> ppp_program=/usr/sbin/ppp
> ppp_user=root
> pppoed_enable=NO
> pppoed_flags='-P /var/run/pppoed.pid'
> pppoed_interface=fxp0
> pppoed_provider='*'
> quota_enable=NO
> quotacheck_flags=-a
> quotaoff_flags=-a
> quotaon_flags=-a
> rarpd_enable=NO
> rarpd_flags=-a
> rc_conf_files='/etc/rc.conf /etc/rc.conf.local'
> rc_debug=NO
> rc_fast=yes
> rc_info=NO
> rc_startmsgs=YES
> rcshutdown_timeout=90
> rfcomm_pppd_server_enable=NO
> rfcomm_pppd_server_one_channel=1
> rfcomm_pppd_server_profile='one two'
> rfcomm_pppd_server_two_channel=3
> root_rw_mount=YES
> route6d_enable=NO
> route6d_flags=''
> route6d_program=/usr/sbin/route6d
> routed_enable=NO
> routed_flags=-q
> routed_program=/sbin/routed
> rpc_lockd_enable=YES
> rpc_lockd_flags=''
> rpc_statd_enable=YES
> rpc_statd_flags=''
> rpc_ypupdated_enable=NO
> rpcbind_enable=NO
> rpcbind_flags=''
> rpcbind_program=/usr/sbin/rpcbind
> rtadvd_enable=NO
> rtadvd_interfaces=''
> rtsol_flags=''
> rtsold_enable=NO
> rtsold_flags=-a
> rwhod_enable=NO
> rwhod_flags=''
> savecore_flags=''
> saver=beastie
> script_name_sep=' '
> scrnmap=NO
> sdpd_control=/var/run/sdp
> sdpd_enable=NO
> sdpd_groupname=nobody
> sdpd_username=nobody
> sendmail_enable=NO
> sendmail_flags='-L sm-mta -bd -q30m'
> sendmail_msp_queue_enable=YES
> sendmail_msp_queue_flags='-L sm-msp-queue -Ac -q30m'
> sendmail_outbound_enable=YES
> sendmail_outbound_flags='-L sm-queue -q30m'
> sendmail_pidfile=/var/run/sendmail.pid
> sendmail_procname=/usr/sbin/sendmail
> sendmail_rebuild_aliases=NO
> sendmail_submit_enable=YES
> sendmail_submit_flags='-L sm-mta -bd -q30m -ODaemonPortOptions=Addr=localhost'
> skip='-s nostart'
> source_rc_confs_defined=yes
> sppp_interfaces=''
> sshd_enable=YES
> sshd_flags='-g 300'
> sshd_program=/usr/sbin/sshd
> static_arp_pairs=''
> static_ndp_pairs=''
> static_routes=''
> stf_interface_ipv4addr=''
> stf_interface_ipv4plen=0
> stf_interface_ipv6_ifid=0:0:0:1
> stf_interface_ipv6_slaid=0000
> svr4_enable=NO
> swapfile=NO
> synchronous_dhclient=NO
> syslogd_enable=YES
> syslogd_flags=-s
> syslogd_program=/usr/sbin/syslogd
> sysvipc_enable=NO
> tcp_drop_synfin=NO
> tcp_extensions=YES
> tcp_keepalive=YES
> timed_enable=NO
> timed_flags=''
> tmpmfs=AUTO
> tmpmfs_flags=-S
> tmpsize=20m
> ubthidhci_enable=NO
> ugidfw_enable=NO
> update_motd=YES
> varmfs=AUTO
> varmfs_flags=-S
> varsize=32m
> virecover_enable=YES
> watchdogd_enable=NO
> watchdogd_flags=''
> weak_mountd_authentication=NO
> wpa_supplicant_conf_file=/etc/wpa_supplicant.conf
> wpa_supplicant_flags=-s
> wpa_supplicant_program=/usr/sbin/wpa_supplicant
> zfs_enable=YES
>
> Compare that with the following:
>
> dteske at scribe9.vicor.com ~ $ sr service foo start
> dteske at scribe9.vicor.com ~ $ cat /tmp/termtest
> HOME=/
> IFS='
> '
> OPTIND=1
> PATH=/sbin:/bin:/usr/sbin:/usr/bin
> PPID=1285
> PS1='# '
> PS2='> '
> PS4='+ '
> PWD=/
>
> Looks to me like some things are being inherited.
> Notably, it would appear that the rc.d scripts are
> run within the parent namespace which has had
> source_rc_confs() called (I'm leaving alone for the
> moment that this indicates that each rc-script is
> being less than efficient by re-sourcing rc.subr).
>
> Given the above (that we are farther from a "clean
> environment" than one might expect), is it really
> that big of a deal to expose $TERM? If so, what are
> the serious issues that could arise?
>
> I personally cannot think of any shortcomings or
> fallout from adding $TERM to be exposed.
>

You said the shortcoming yourself - it doesn't fix the issue at boot. 
What exactly are you fixing? What screen/tmux rc scripts are you 
referring to? The ports don't have these.

Also your change introduces bugs into the manpage which states exactly 
what environment is passed in.

What terminal I happen to restart a script from should not affect the 
process. This is a regression of one of the key *documented* points of 
service(8) that it will not pollute the rc script with the calling 
environment. TERM is a pretty big aspect of an environment.

I run my systems 100% remotely. I don't want whatever console happens to 
be setup to be modifying my startup scripts with a TERM value. 
Especially if I go run service(8) from SSH and have it change behavior 
further.

-- 
Regards,
Bryan Drewery


More information about the svn-src-head mailing list