Command to see shells in linux

How to find list of available shells by command-line?

(IFS=: && grep -rl tcsetpgrp $PATH | xargs grep -rl setrlimit) on a Debian system seems to give a good approximation.

4 Answers 4

To list available valid login shells for use at time, type following command:

pandya@pandya-desktop:~$ cat /etc/shells # /etc/shells: valid login shells /bin/sh /bin/dash /bin/bash /bin/rbash /bin/ksh93 

For information about shell visit wikipedia.

Note that this will not work for all systems. E.g. Solaris and HP-UX do not have an /etc/shells file by default.

You can also use chsh -l This will print the list of shells.

[anurag@focused ~]$ chsh -l /bin/sh /bin/bash /sbin/nologin /usr/bin/sh /usr/bin/bash /usr/sbin/nologin 

@Pandya can you provide the complete command you are using. You might be using it with combination of other shell methods or constructs like ((. )) or [. ] or [[. ]]

@Pandya man7.org/linux/man-pages/man1/chsh.1.html This provides -l option. Just click on the link on the top of the page, to go to linux-util man page

On at least OpenBSD and NetBSD:

On (Ubuntu) Linux and many other Unices (including BSDs):

On Solaris, the file /etc/shells may not exist. The list of valid shells is contained in the shells(4) manual. On my vanilla Solaris 11.3 system, this lists the following shells:

/bin/bash /usr/bin/bash /bin/pfbash /usr/bin/pfbash /bin/csh /usr/bin/csh /bin/pfcsh /usr/bin/pfcsh /bin/jsh /usr/bin/jsh /sbin/jsh /usr/sbin/jsh /bin/ksh /usr/bin/ksh /bin/pfksh /usr/bin/pfksh /bin/ksh93 /usr/bin/ksh93 /bin/pfksh93 /usr/bin/pfksh93 /bin/sh /usr/bin/sh /bin/pfsh /usr/bin/pfsh /bin/tcsh /usr/bin/tcsh /bin/pftcsh /usr/bin/pftcsh /sbin/sh /usr/xpg4/bin/sh /sbin/pfsh /usr/xp4/bin/pfsh /bin/zsh /usr/bin/zsh /bin/pfzsh /usr/bin/pfzsh /usr/sfw/bin/zsh 

It’s worth noting that on my installation, neither /usr/sfw/bin/zsh nor /usr/xp4/bin/pfsh exists.

A shorter list of valid Solaris shells (duplicates of each shell removed):

/bin/bash /bin/ksh /bin/pfcsh /bin/pfsh /bin/sh /bin/csh /bin/ksh93 /bin/pfksh /bin/pftcsh /bin/tcsh /bin/jsh /bin/pfbash /bin/pfksh93 /bin/pfzsh /bin/zsh 

Источник

Determine the Current Shell in Linux

announcement - icon

The Kubernetes ecosystem is huge and quite complex, so it’s easy to forget about costs when trying out all of the exciting tools.

To avoid overspending on your Kubernetes cluster, definitely have a look at the free K8s cost monitoring tool from the automation platform CAST AI. You can view your costs in real time, allocate them, calculate burn rates for projects, spot anomalies or spikes, and get insightful reports you can share with your team.

Connect your cluster and start monitoring your K8s costs right away:

1. Overview

A shell is a program that provides a command-line interface to the operating system.

Linux and Unix-like operating systems provide different shells to the users. Bash (Bourne Again Shell), csh (C Shell), ksh (Korn Shell), and sh (Bourne Shell) are the most common ones.

Читайте также:  Linux run android applications

In this tutorial, we’ll look at various ways to find out the current shell we are working in.

2. Using the echo Command

The echo command in Linux is used to display a line of text or string that is passed to it as an argument. We can also use this command to print the current shell.

2.1. echo $SHELL

The $SHELL variable contains the name of the default shell. We can display its value:

While this approach works in most cases, it is not a reliable way since the currently running shell may not be the default shell.

2.2. echo $0

We can also use the echo command with the $0 variable:

This approach works well on the command line but not from within a script. Within a script file, the $0 variable will not print the current shell. Instead, it prints the name of the file or the program.

3. Using the ps Command

The ps (process status) command provides a snapshot of the currently running processes:

$ ps PID TTY TIME CMD 4467 pts/0 00:00:00 bash 5379 pts/0 00:00:00 ps 

The last column CMD in the output shows that the bash shell is currently running.

4. Viewing the /etc/passwd File

/etc/passwd file is a plain text file in Linux which contains users’ account information such as username, user ID, group ID, home directory, and shell.

Using the grep command, we can search this file for a string that starts with the username of the currently logged in user:

$ grep "^$USER" /etc/passwd vroot:x:1000:1000:Vroot:/home/vroot:/bin/bash 

The last part of the output shows that the default shell is bash. Again, this is not a reliable approach since the default shell may not always be the current shell.

5. Using the lsof Command

The lsof command lists all the open files of all the running processes. We can use this command with the -p option to only select the files belonging to the current shell’s process ID:

$ lsof -p $$ COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME bash 2796 vroot cwd DIR 253,2 4096 2097153 /home/vroot bash 2796 vroot rtd DIR 253,0 4096 2 / bash 2796 vroot txt REG 253,0 1514000 2490662 /usr/bin/bash bash 2796 vroot mem REG 253,0 8406312 131168 /var/lib/sss/mc/passwd . other lines omitted . bash 2796 vroot 255u CHR 136,0 0t0 3 /dev/pts/0 

The $$ is a special parameter that expands to the process ID of the current shell.

The first column COMMAND in the output shows that the running shell is bash.

The readlink command prints resolved symbolic links or canonical file names. /proc/[pid]/exe is a symbolic link containing the actual pathname of the executed command with process id pid.

We can use the $$ special parameter to run readlink on the current shell’s process id:

$ readlink /proc/$$/exe /usr/bin/bash 

From the pathname to the shell command, we can infer that the shell we are running is bash.

7. Using /proc/$$/cmdline

/proc/[pid]/cmdline is a read-only file that contains the complete command line for any process with id pid.

We can use the $$ special parameter as the pid:

The output shows that we are running the bash shell.

8. Other Approaches

Sometimes none of the approaches we looked at might work. This can happen if the executable does not match the running shell.

In such cases, we can look at some shell-specific environment variables to infer which shell is running.

Читайте также:  Linux make user sudo

For instance, if it’s a bash shell, the $BASH variable will be set. Similarly, in the tcsh shell, the $version variable will be set.

The $PS1 and $PS2 variables are set in the sh shell, while the $PS3 and $PS4 variables are set in the ksh shell.

9. Conclusion

In this article, we learned various ways of determining which shell we are currently running in Linux. We looked at examples for several approaches and the limitations of each approach. We also learned about some heuristics we can use when none of the common approaches work.

Источник

Как определить и изменить командную оболочку (shell) в Linux

Как изменить оболочку Shell в Linux

Командная оболочка или командный интерпретатор в Linux — это программа, которая в текстовой среде выступает в качестве интерфейса между пользователем и операционной системой. Она интерпретирует вводимые команды с терминала и вызывает необходимые программы.

Когда вы работаете в терминале, именно командная оболочка обрабатывает вводимые вами команды. Более того, оболочки Linux поддерживают написание программ на языке оболочки.

Оболочки Linux

Одна из самых популярных командных оболочек — это оболочка Bash (Bourne Again Shell). Она используется по умолчанию в большинстве дистрибутивов Linux.

Существуют разные оболочки Linux. Можно отметить:

Оболочки могут очень сильно отличаться друг от друга. Они отличаются функциональностью, синтаксисом команд, строкой приветствия, дружелюбностью к пользователю и другими параметрами и возможностями.

Как определить текущую командую оболочку

Есть несколько способов определить оболочку, используемую по умолчанию в вашей системе Linux. Рассмотрим несколько из них, так как в разных системах (и оболочках) какие-то способы могут не сработать.

Также нужно знать, что у разных пользователей системы могут использоваться разные оболочки.

Способ 1

Переменная окружения SHELL хранит путь до исполняемого файла оболочки. Выполним команду:

Из вывода команды, мы видим, что используется оболочка bash.

Способ 2

Также можно воспользоваться командой echo $0 . Данная команда выведет на экран имя текущего работающего процесса, внутри которого она выполнена. Так как мы выполняем команду внутри оболочки, то будет выведено имя оболочки.

Способ 3

Определим, работающий процесс оболочки командой ps.

ps -p $$ PID TTY TIME CMD 10792 pts/3 00:00:00 bash

Определить текущую оболочку Shell в Linux

Как посмотреть список оболочек, доступных в системе

Список оболочек, которые в данный момент установлены и доступны в системе Linux, хранится в файле /etc/shells

Выведем содержимое файла /etc/shells , для этого выполняем команду:

cat /etc/shells # /etc/shells: valid login shells /bin/sh /bin/bash /bin/rbash /bin/dash

Список командных оболочек Linux

Как временно переключиться на другую оболочку

Чтобы временно переключиться на другую оболочку, достаточно выполнить в терминале команду, соответствующую ее имени. После этого вы переключитесь на новую оболочку.

Например, переключимся на оболочку sh. Выполняем команду:

Переключиться на другую оболочку в Linux

Как изменить оболочку

Для изменения командной оболочки на постоянной основе служит команда chsh (от слов change shell).

Чтобы изменить оболочку текущего пользователя нужно выполнить команду:

В качестве параметра путь_новой_оболочки необходимо указать путь до исполняемого файла оболочки, который вы можете найти в файле /etc/shells (см. выше).

Например, изменим оболочку на sh. Для этого выполняем команду (при выполнении команды нужно будет ввести пароль):

После этого нужно выйти и снова войти в систему.

Чтобы изменить оболочку, используемую по умолчанию, для другого пользователя, то команде chsh необходимо указать имя этого пользователя:

Заключение

Мы рассмотрели, как определить текущую оболочку Linux, как просмотреть список доступных оболочек, а также как изменить оболочку, используемую по умолчанию.

Чтобы получить информацию о какой-либо оболочке (доступной в системе) можно воспользоваться Man-страницами. Например:

Дополнительные оболочки можно устанавливать средствами системы (из репозиториев). Например, для установки оболочки fish в Ubuntu Linux, выполните команду

Читайте также:  Alt linux сертифицированный фстэк

Источник

4 Ways to Check Which Shell You are Using on Linux

check user shell linux

Out of the box, Linux provides a wide variety of shells. There is bash (Bourne Again shell) shell which ships by default in many Linux distributions. We also have sh (Bourne Shell), tcsh (TC shell), csh (C shell), Zsh (Z shell) and ksh (Korn Shell).

Curious to know which shell you are using on your Linux system? In this guide, we explore different ways that you can use to check which shell you are currently using in Linux.

1. Using echo command

The Linux echo command is a built-in command that is used to print the output of a string which is passed as an argument. Additionally, you can use the echo command to check the shell that you are running commands in. To accomplish this, execute:

Output of echo $SHELL

The output shows that I am using the bash shell. Additionally, you can simply run the command:

Output of echo

To get the PID of the shell that you are currently in, run:

Output of echo $

2. Using ps command

Commonly used for listing running processes, the ps command in its basic format sheds light on the shell that you are using. Simply execute the command:

output of ps command

From the first line of the output, we can clearly see the PID of the shell and the last column prints out the type of shell, in this case — bash.

Alternatively, you can run the command:

Output of ps -p $

You can also use ps -p $$ -o args= which output just the shell name.

3. By viewing /etc/passwd file

The grep command can be used to probe the /etc/passwd file that contains attributes of the users such as username, user ID and group ID.

To display the shell used, invoke the command:

Using /etc/passwd file to show shell

At the very last segment, we get to see the bash used, in this case /bin/bash This also gives you a glimpse of which shell is opened first when you first log in to your system.

4. Using lsof command

Ordinarily, the lsof command, short for list of open files, is used to provide a list of open files on your system. However, when used with the -p $$ flag, it gives a pointer to the shell you are in when you look at the first column of the output.

For example, we can clearly see that we are on the bash shell.

Output of lsof -p $

How to check the valid login shells

We have seen various ways that you can employ to check the shell that you are currently in. If you want to know the valid shells on your system, check the /etc/shells file, This file will provide you with the full pathnames of valid login shells in your system. Using the cat command, view the file as shown:

Valid login shells

Conclusion

In this guide, we have shared simple but nifty ways that you can use to know which shell you are working on. This is important when writing scripts so that you can know how to start off writing the shebang header. We do hope that this tutorial was beneficial. Send us a shout and don’t forget to share this guide on your social platforms.

If this resource helped you, let us know your care by a Thanks Tweet. Tweet a thanks

Источник

Оцените статью
Adblock
detector