Назад | Перейти на главную страницу

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

Есть ли sh команда linux использует текущую оболочку пользователя, даже если она не bash? Например, предположим, что пользователь bob запускает csh. Если я создам сценарий с функциями и csh и попробую выполнить его с помощью:

sh cshtestscript

Будет ли это работать с csh?

Затем предположим, что другое использование Джо использует bash. Если я создам другой сценарий с функциями и сценарием bash и попытаюсь выполнить его с помощью:

sh bashtestscript

Будет ли это работать с bash?

sh это просто стандартный исполняемый файл, который всегда является определенной оболочкой. Нет никакого волшебства, чтобы определить, какую оболочку использовать.

% whereis sh
sh: /bin/sh
% ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Mar 29 11:53 /bin/sh -> dash

В системах Ubuntu /bin/sh является (по умолчанию) символической ссылкой на рывок, которая представляет собой минимальную оболочку POSIX, предназначенную для неинтерактивного использования. Если ты бежишь sh cshtestscript в системе Ubuntu он попытается запустить сценарий с тире.

Правильный способ справиться с этим - добавить Shebang к сценарию, который указывает, какую оболочку использовать, сделать сценарий исполняемым и всегда выполнять его как ./cshtestscript.

#!/bin/csh