login shell:
Когато потребител влезе в системата, през някой от виртуалните терминали,
се стартира "login shell (команден интерпретатор)".
Те се разделят на два основни типа: born и "C".
От първия тип при Slackware са налични bash, ksh93, ash и zsh,
а от втория - tcsh.
Основния команден интерпретатор с bash.
Всички born съвместими командни интерпретатори,
когато се стартират като "login" изпълняват командите
от глобалния "/etc/profile" и потребителския "~/.profile" файлове.
В глобалния файл се присвояват стойности на променливи от обкръжението,
като PATH, MANPATH, HOSTNAME, PS1 и др.
От този файл се изпълняват и командите от файловете /etc/profile.d/*.sh,
ако те са изпълними.
В /etc/profile се стартира командата dircolors(1),
която присвоява стойност на променливите LS_COLORS и LS_OPTIONS.
Тази команда създава и синоним на командата ls.
Именно на това се дължи изобразяването в различни цветове на файловете и директориите.
Разликата се вижда, като се сравнят резултатите от изпълнението на командите "ls" и "/bin/ls".
Синоними на команди няма при някой командни интерпретатори, например в стандартния "born shell".
Когато bash се стартира с командата sh,
то тогава командния интерпретатор емулира стандартния "born shell"
и няма поддръжка на синоними и съответно при командата ls няма цветове.
В такъв случай се използва командата "ls --color ...".
Виж ls(1) и dircolors(1).
interactive shell:
Такъв е командния интерпретатор, когато не е зададено име на файл с команди
и стандартния вход и изход са свързани към терминали.
От интерактивния команден интерпретатор се излиза с командата "exit"
или с клавишната комбинация [CTRL]+[D].
Може да се излезе и с командата "logout" в случай, че това е "logon shell".
Например с командата bash се стартира интерактивен команден интерпретатор,
който не е "logon shell".
Когато се стартира интерактивен команден интерпретатор,
синонимите на командите не се наследяват.
bash:
При този команден интерпретатор при "logon shell" се
търсят потребителските файлове:
~/.bash_profile, ~/.bash_login, и ~/.profile,
като се изпълняват командите само от първия намерен.
При "interactive shell", ако не е "logon shell",
командите се изпълняват от файла ~/.bashrc, ако съществува.
За повече информация виж секцията INVOCATION в bash(1).
В някой от случаите, трябва да се възстанови стойността на променливата PS1,
която задава вида на показалеца на интерпретатора.
X терминални програми:
Такива са например xterm и konsole (от KDE).
При тях, за да стартират "logon shell", на командния ред
се задава аргумента -ls за xterm и --ls за konsole.
Тези програми, се стартират предимно без аргумента за "logon shell",
от менюта или икони на работната площ.
Решение:
Предложеното решение е да се създадат следните четири файла:
След това се създава потребителя с командата "usedadd -s /bin/bash -m ...".
Най-важно е при създаването да се укаже изрично командния интерпретатор,
с аргумента "-s /bin/bash" и с "-m" за създаване на потребителската домашна директория.
При създаването на директорията съдържанието от /etc/skel се копира в нея.
При съществуващи потребители трябва съдържанието на файловете:
~/.profile, ~/.bash_profile и ~/.basrc да се обедини
със съответните примери от директория /etc/skel.
Именно така бяха създадени тестовите потребители.
Възстановяването на показалеца на командния интерпретатор и
синонима на командата ls става в /etc/bashrc.
Изпълнението на командите в него става от ~/.bashrc.
Файла ~/.bash_profile изпълнява командите от ~/.profile и ~/.bashrc.