summary refs log blame commit diff stats
path: root/examples/bash_automatic_cd.sh
blob: 040bf21a3134e5048f84279be68b3039e0c09d8b (plain) (tree)
1
2
3
4
5
6
7
8
9
10
                                            
 







                                                                              
                                      









                                                              
# Compatible with ranger 1.4.2 through 1.7.*
#
# Automatically change the directory in bash after closing ranger
#
# This is a bash function for .bashrc to automatically change the directory to
# the last visited one after ranger quits.
# To undo the effect of this function, you can type "cd -" to return to the
# original directory.

function ranger-cd {
    tempfile="$(mktemp -t tmp.XXXXXX)"
    /usr/bin/ranger --choosedir="$tempfile" "${@:-$(pwd)}"
    test -f "$tempfile" &&
    if [ "$(cat -- "$tempfile")" != "$(echo -n `pwd`)" ]; then
        cd -- "$(cat "$tempfile")"
    fi
    rm -f -- "$tempfile"
}

# This binds Ctrl-O to ranger-cd:
bind '"\C-o":"ranger-cd\C-m"'
Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
<!DOCTYPE html>
<html dir="ltr" lang="en">
    <head>
        <meta charset='utf-8'>
        <title>1.2. Configure</title>
    </head>
    <body>

        <a href="index.html">Core OS Index</a>

        <h1 id="chroot">1.2. Configure</h1>

        <p>If you don't mounted chroot follow this
        steps from <a href="install.html">install</a>;</p>

        <pre>
        $ export CHROOT=/mnt
        </pre>

        <pre>
        $ export BLK_EFI=/dev/sda1
        $ export BLK_BOOT=/dev/sda2
        $ export BLK_ROOT=/dev/sda3
        $ export BLK_VAR=/dev/sda5
        $ export BLK_USR=/dev/sda7

        $ export BLK_HOME=/dev/sda8

        $ sudo mount $BLK_BOOT $CHROOT/boot
        $ sudo mount $BLK_EFI $CHROOT/boot/efi
        $ sudo mount $BLK_VAR $CHROOT/var
        $ sudo mount $BLK_USR $CHROOT/usr

        $ sudo mount $BLK_HOME $CHROOT/home
        </pre>

        <p>Now you can chroot;</p>

        <pre>
        $ sudo chroot $CHROOT /usr/bin/env -i \
          HOME=/root TERM="$TERM" PS1='\u:\w\$ ' \
          PATH=/bin:/usr/bin:/sbin:/usr/sbin \
          /bin/bash --login
        </pre>

        <h2 id="hostname">1.2.1. Set hostname and hosts</h2>

        <p>Give it a name, this example we will call it machine;</p>

        <pre>
        # hostname machine
        </pre>

        <p>Edit /etc/hosts to contain your hostname and FQDN,
        this example uses machine.example and machine.example.org sub-domain from
        <a href="http://freedns.afraid.org">afraid.org</a> pointing
        to 10.0.0.1 ip;</p>

        <pre>
        # IPv4
        127.0.0.1	localhost.localdomain localhost
        127.0.0.1       machine.example machine

        #&lt;ip-address&gt;	&lt;hostname.domain.org&gt;	&lt;aliases&gt;
        10.0.0.1                machine.example.org

        # IPv6
        #::1		ip6-localhost	ip6-loopback
        #fe00::0	ip6-localnet
        #ff00::0	ip6-mcastprefix
        #ff02::1	ip6-allnodes
        #ff02::2	ip6-allrouters
        #ff02::3	ip6-allhosts

        # End of file
        </pre>

        <p>Checkup;</p>

        <pre>
        $ hostname
        machine
        $ hostname -f
        machine.example
        </pre>

        <h2 id="time">1.2.2. Set timezone</h2>

        <p>Setup timezone;</p>

        <pre>
        # tzselect
        Please identify a location so that time zone rules can be set correctly.
        Please select a continent, ocean, "coord", or "TZ".
         1) Africa
         2) Americas
         3) Antarctica
         4) Asia
         5) Atlantic Ocean
         6) Australia
         7) Europe
         8) Indian Ocean
         9) Pacific Ocean
        10) coord - I want to use geographical coordinates.
        11) TZ - I want to specify the time zone using the Posix TZ format.
        #? 7

        Please select a country whose clocks agree with yours.
         1) ?land Islands         18) Greece                35) Norway
         2) Albania               19) Guernsey              36) Poland
         3) Andorra               20) Hungary               37) Portugal
         4) Austria               21) Ireland               38) Romania
         5) Belarus               22) Isle of Man           39) Russia
         6) Belgium               23) Italy                 40) San Marino
         7) Bosnia & Herzegovina  24) Jersey                41) Serbia
         8) Britain (UK)          25) Latvia                42) Slovakia
         9) Bulgaria              26) Liechtenstein         43) Slovenia
        10) Croatia               27) Lithuania             44) Spain
        11) Czech Republic        28) Luxembourg            45) Svalbard & Jan Mayen
        12) Denmark               29) Macedonia             46) Sweden
        13) Estonia               30) Malta                 47) Switzerland
        14) Finland               31) Moldova               48) Turkey
        15) France                32) Monaco                49) Ukraine
        16) Germany               33) Montenegro            50) Vatican City
        17) Gibraltar             34) Netherlands
        #? 37

        Please select one of the following time zone regions.
        1) mainland
        2) Madeira Islands
        3) Azores
        #? 1

        The following information has been given:

            Portugal
            mainland

        Therefore TZ='Europe/Lisbon' will be used.
        Local time is now:      Sun Aug  9 17:36:05 WEST 2016.
        Universal Time is now:  Sun Aug  9 16:36:05 UTC 2016.
        Is the above information OK?
        1) Yes
        2) No
        #? 1

        You can make this change permanent for yourself by appending the line
            TZ='Europe/Lisbon'; export TZ
        to the file '.profile' in your home directory; then log out and log in again.

        Here is that TZ value again, this time on standard output so that you
        can use the /usr/bin/tzselect command in shell scripts:
        Europe/Lisbon
        #
        </pre>

        <h2 id="locale">1.2.3. Set locale</h2>


        <pre>
        # localedef -i en_US -f UTF-8 en_US.UTF-8
        </pre>

        <h2 id="user">1.2.4. Users</h2>

        <h3>1.2.4.1. Set root password</h3>

        <pre>
        # passwd
        </pre>

        <h3>1.2.4.2. Create Administrator User</h3>

	<p>Description of most default pretinent groups;</p>

	<dl>
		<dt>adm</dt>
		<dd>Administration group.</dd>
		<dt>ftp</dt>
		<dd>Access to files served by ftp.</dd>
		<dt>users</dt>
		<dd>Standard users group.</dd>
		<dt>wheel</dt>
		<dd>Administration group used to give access to sudo.</dd>
	</dl>

        <pre>
        # group -g username username
        # useradd -u username -g username -m -k /etc/skel -s /bin/bash username
        # usermod -G adm,wheel,audio,video username
        # passwd username
        </pre>

        <pre>
        # chmod 0700 /root
        # chmod 0700 /home/username
        </pre>

        <h3>1.2.4.3 Add Administrator to Wheel group</h3>

        <pre>
        bash-4.3# sudoedit /etc/sudoers
        </pre>

        <pre>
        ## Uncomment to allow members of group wheel to execute any command
        %wheel ALL=(ALL) ALL
        </pre>

        <h2 id="fstab">1.2.5. File system table</h2>

        <p>First we will discover block id (UUID) of
        <a href="install.html#step2">target partition</a>,
        blkid list all while vol_id --uuid /dev/sdb1 returns
        only uuid. Add all block ids to the end of file
        /etc/fstab;
        </p>

        <pre>
        # blkid >> /etc/fstab
        </pre>

        <p>Read <a href="http://linux-audit.com/securing-mount-points-on-linux/" title="Securing mount points">Securing mount points</a>,
        and edit /etc/fstab according to your disk layout. Blocks with uuid will later be created at <a href="../tools/lvm.html">lvm</a>.</p>

        <p>Pass option control in wich order fsck checks devices. If is
        a multiple partition scheme; 1 for root, 2 for others or 0 to
        disable fsck. In this example fsck in usr partition is disable,
        initram file system mounted on boot making impossible to run fsck.</p>

        <pre>
        /dev/sda3  				   / 		ext4	defaults,noatime,ro				0	1
        # usr is not checked because is already mounted by init ram (to be fixed).
        UUID=20bd3948-0877-4192-af52-ad87d6f96db0  /usr		ext4	defaults,ro,nodev,errors=remount-ro		0	0
        devpts                 		           /dev/pts	devpts	noexec,nosuid,gid=tty,mode=0620			0	0
        none                                       /sys/kernel/security securityfs defaults                             0       0
        devpts                 		           /dev/pts	devpts	noexec,nosuid,gid=tty,mode=0620			0	0
        shm                   			   /dev/shm	tmpfs	defaults                                        0       0
        tmp                                        /tmp         tmpfs   defaults,noatime,nosuid,nodev,noexec,size=128M  0       0
        UUID=3b408790-65e1-4638-9591-7ba61f266913  /boot	ext4	defaults,ro,noatime		  		0	2
        UUID=962D-0DE1				   /boot/efi	vfat	ro,noauto,umask=0077      			0	2
        UUID=f2336a56-fbe6-444c-bdbf-f0e6c209c237  /var		ext4	defaults,nodev,noexec,nosuid,errors=remount-ro  0	2
        UUID=66c083d6-b8f2-4a98-ae55-9412f98cc089  /usr/ports	ext4	defaults,ro,nodev,errors=remount-ro		0	2
        pkgmk                                      /usr/ports/work tmpfs   size=30G,gid=101,uid=100,defaults 		0       2
        UUID=36e9e1d5-8356-451e-a301-81098b9a15ea  /srv		ext4	defaults,nodev,errors=remount-ro		0	2
        UUID=cd15196a-69f1-4fb4-9730-a384c62add91  /home        ext4    defaults,nodev,nosuid,errors=remount-ro		0	2
        #UUID=04f07488ce7b36205acc6d404dcf924643660ac5  /usr/ports/distfiles	ext4	defaults,ro,nodev,errors=remount-ro		0	2
        # End of file
        </pre>

        <h2 id="rcconf">1.2.6. Initialization Scripts</h2>

        <p>Edit /etc/rc.conf and define keyboard layout, hostname and timezone,
        more information about
        <a href="http://crux.nu/Main/Handbook3-3#ConfigurationVariables">configuration variables</a>.
        </p>

        <pre>
        #
        # /etc/rc.conf: system configuration
        #

        FONT=default
        KEYMAP=dvorak
        TIMEZONE="Europe/Lisbon"
        HOSTNAME=machine
        SYSLOG=sysklogd
        SERVICES=(lo iptables wlan crond)

        # End of file
        </pre>

        <a href="index.html">Core OS Index</a>
        <p>This is part of the Hive System Documentation.
        Copyright (C) 2018
        Hive Team.
        See the file <a href="../fdl-1.3-standalone.html">Gnu Free Documentation License</a>
        for copying conditions.</p>
    </body>
</html>