Diferente / bin / sh para um usuário específico

0

Estou executando uma distro do Ubuntu em que /bin/sh é um symlink para /bin/dash . Embora isso seja bom para a maioria dos meus usuários, um deles deve ter bin/sh "symlinked" para /bin/bash .

Isso é possível? Não tenho certeza de como fazer isso.

Atenciosamente.

    
por htulipe 09.03.2014 / 18:05

2 respostas

3

[…] one of them must have /bin/sh symlinked to /bin/bash.

Eu suspeito que o estado real das coisas é:

[…] one of them has some badly written shell scripts with Bashisms in, and doesn't want to fix xyr bad scripts.

Você não pode fazer um link simbólico por usuário, obviamente. Então, faça com que seu usuário obtenha esses Bashisms de qualquer shell script que use /bin/sh como seu intérprete, e coloque /bin/bash (ou as alternativas mencionadas por piernov) em qualquer shell onde o shell Bourne Again realmente deva ser o interpretador de scripts.

Esses scripts, se eles assumirem que sh é sempre o shell Bourne Again ou se eles dependem de Bashisms e não invocam o shell Bourne Again como bash (mesmo invocando-o como sh is errado se alguém quiser um número razoável de Bashisms.), são quebrados e devem ser consertados.

Leitura adicional

por 09.03.2014 / 19:07
2

/bin/sh é apenas uma shell Bourne. Tanto o dash quanto o bash podem atuar como shells compatíveis com sh, e como o shell original do Bourne não é mais usado, sh é geralmente um link simbólico para bash ou dash (principalmente no Ubuntu), ou mesmo zsh.

Ao usar sh, você não deve estar usando nenhuma especificidade de um shell em particular. É por isso que um script com #!/bin/sh shebang não deve confiar em nenhum bashismo, por exemplo. Quando estiver usando alguma particularidade do bash, ele deve estar usando #!/usr/bin/env bash . Isso é para um shell usado para executar scripts.

Outro aspecto do shell é o prompt de comando usado por um usuário. Na maioria das vezes, ele é definido em /etc/passwd e a escolha fica a critério da distribuição que você está usando. Se o padrão for usar traço, obviamente você pode alterar a linha em /etc/passwd para um usuário específico e colocar /usr/bin/bash .

Por fim, mesmo que não seja uma boa ideia, se você realmente quiser que o comando sh execute bash , se estiver em um shell, você deve poder alias ou criar um symlink para ele em outro diretório ( ~/bin , por exemplo), em seguida, coloque-o no PATH ( export PATH="~/bin:${PATH}" ).

    
por 09.03.2014 / 18:16

Tags