Diferente / bin / sh para un usuario específico

0

Estoy ejecutando una distribución de Ubuntu donde /bin/shes un enlace simbólico /bin/dash. Si bien esto está bien para la mayoría de mis usuarios, uno de ellos debe haber bin/sh"vinculado" /bin/bash.

¿Es eso posible? No estoy seguro de cómo hacer esto.

Saludos.

htulipe
fuente

Respuestas:

3

[…] Uno de ellos debe tener un /bin/shenlace simbólico /bin/bash.

Sospecho que el estado actual de las cosas es:

[...] uno de ellos tiene algunos scripts de shell mal escritos con Bashisms, y no quiere arreglar scripts de xyr mal.

No puede hacer un enlace simbólico por usuario, obviamente. Por lo tanto, haga que su usuario obtenga esos Bashisms de cualquier script de shell que use /bin/shcomo su intérprete, y que ponga /bin/bash(o las alternativas mencionadas por piernov) en cualquier script de shell donde el shell Bourne Again realmente se supone que es el intérprete de script.

Estas secuencias de comandos, si suponen que shsolo es el shell Bourne Again o si se basan en Bashisms y de hecho no invocan el shell Bourne Again como bash(Incluso invocarlo como shincorrecto si uno quiere un número justo de Bashisms .), están rotos y deben repararse.

Otras lecturas

JdeBP
fuente
2

/bin/shes solo un shell Bourne. Tanto dash como bash pueden actuar como shells compatibles con sh, y dado que el shell Bourne original ya no se usa, sh es a menudo un enlace simbólico a bash o dash (principalmente en Ubuntu), o incluso zsh.

Sin embargo, cuando use sh, no debe usar ninguna especificidad de un shell en particular. Es por eso que un script con un #!/bin/shshebang no debería depender de ningún bashismo, por ejemplo. Cuando se hace referencia alguna particularidad de fiesta, se debe utilizar #!/usr/bin/env bash. Eso es para un shell utilizado para ejecutar scripts.

Otro aspecto del shell es el símbolo del sistema utilizado por un usuario. La mayoría de las veces se define en /etc/passwd, y la elección es a discreción de la distribución que está utilizando. Si el valor predeterminado es usar guión, obviamente puede cambiar la línea /etc/passwdpara un usuario específico y poner /usr/bin/bash.

Finalmente, incluso si no es una buena idea, si realmente desea shque se ejecute el comando bash, si está en un shell, debería poder aliashacerlo, o crear un enlace simbólico en otro directorio ( ~/binpor ejemplo) y luego agregarlo a la RUTA ( export PATH="~/bin:${PATH}")

piernov
fuente
Más exactamente, /bin/shgeneralmente no es el shell Bourne en sí mismo, sino un enlace a otro shell que se adhiere a la especificación POSIX, que se basa pero no es idéntico al shell Bourne original.
chepner