`Su -` ve` su --login` arasındaki fark nedir?


15

Adlı kullanıcının suman sayfasından:

For  backward  compatibility, su defaults to not change the current directory
and to only set the environment variables HOME and SHELL (plus USER and LOGNAME
if the target user is not root).  It is recommended to always use the 
--login option (instead of  its  shortcut -) to avoid side effects caused
by mixing environments.

...

-, -l, --login
    Start the shell as a login shell with an environment similar to a real login:

        o      clears all the environment variables except TERM

        o      initializes the environment variables HOME, SHELL, USER, LOGNAME, and PATH

        o      changes to the target user's home directory

        o      sets argv[0] of the shell to '-' in order to make the shell a login shell

-Ve --login(veya sözde sadece -l) arasında herhangi bir fark olup olmadığını söylemek zor . Yani, man sayfası "kısayolu yerine" diyor, ancak tüm bu seçenekler birlikte gruplandırılmış ve eğer varsa, farkın bir açıklamasını görmüyorum.

UPD Sorunumu çözmesi gereken soruyu kontrol ettim . Soru temel olarak suve arasındaki farktır su -. Ve arasındaki fark hakkında soruyorum su -ve su --login. Yani hayır, hiç çözmüyor.


4
Bence bu cümle kötü yazılmış. O olmalıTo avoid side effects caused by mixing environments use --login option or its equivalent -. The first form is recommended because - can be placed only just before username.
jimmij

Yinelenen tanımınızı bilmiyorum ama sorumu böyle düşünmüyorum. Önerdiğiniz soru temel olarak suve arasındaki farktır su -. Ve arasındaki fark hakkında soruyorum su -ve su --login. Burada ne eksik?
x-yuri

Yanıtlar:


11

Debian'ın manuel girişi daha aydınlatıcı görünüyor:

   -, -l, --login
       Provide an environment similar to what the user would expect had the user logged
       in directly.

       When - is used, it must be specified before any username. For portability it is
       recommended to use it as last option, before any username. The other forms (-l
       and --login) do not have this restriction.

Birbirlerini tamamladıklarını söyleyebilirim. Yukarı akış yönünden gelen , kullanmaktan kaçınmayı önerir -. Bundan bahsetmişken, neden " herhangi bir kullanıcı adından önce "?
x-yuri

7
"herhangi bir kullanıcı
adından

@MarkPlotnick Yanlış görünüyorsun .
x-yuri

@ x-yuri tüm tartışma, Mark Plotnick'in doğru olduğu ve kılavuzun en iyi ihtimalle mantıksal olarak belirsiz olduğu sonucuna varır. (çoğumuz fark etmese de)
ctrl-alt-delor

I disagree, however, with the general point that, "before any username" can be rephrased as "before the username, if any." Perhaps Mr. Plotnik meant that the man page* should have rephrased the text using his suggestion, but the two phrases are not equivalent (as I explained at the beginning of this post).Yani, Mark Plotnick nasıl suçalıştığını bilir , ancak "varsa herhangi bir kullanıcı adından önce"! = ". Gördüğüm gibi, tartışmanın ortaya çıktığı sonuç budur.
x-yuri

0

fark yok, koşmak gibi;

echo bob | grep -v bob
echo bob | grep --invert-match bob

sadece steno ...


3
Karıştırma ortamlarının yol açtığı yan etkileri önlemek için açıklama istediğini düşünüyorum . man sayfasının bir parçası. Ne yan etkileri var?
Zachary Brady

Pek sayılmaz. Yan etkileri az ya da çok net ve birini kullanarak değilken bunlar geçerli -, -l, --login. Benim sorum, -'-l , and --login` yerine neden kullanılmasının önerilmediğiyle ilgili.
x-yuri

Eğer senaryo yazıyorsanız taşınabilirlik sorunu olurdu, ben bir senaryoda su kullanarak hiç tavsiye
etmem

suBir senaryo yazarken neden hiç kullanmıyorsunuz ?
x-yuri

neden verilerin sahibi olan kullanıcı olarak bir komut dosyası yazmıyorsunuz? En nadiren, başka bir kullanıcı olarak eylemleri gerçekleştirmeniz gereken bir usecase vardır ve daha sonra sudo (kullanılan komutlar ve parametreler üzerinde sınırlamaları vardır) vardır.
mikejonesey
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.