değişkenlerin bildirilmesinden sonra çalıştırıldığında varsayılanlar “komut bulunamadı”


1

Aşağıdaki kod neden çalışmıyor?

#!/bin/sh
PATH=$PWD/Info
defaults read $PATH

Her çalıştırdığımda alıyorum

./script: satır 3: defaults: komut bulunamadı

Bir kerede bir satırda yaptığımda işe yarıyor

defaults read $PWD/Info

Öyle tamam. Ben sadece merak ediyorum.


Değişkenler büyük / küçük harf duyarlıdır. Kurallara göre, tüm büyük harfler değişkenleri küresel veya ortam değişkenleridir. Komut dosyası yerel değişkenleriniz için küçük harfler kullanmalısınız. PATH gibi, bu küreseller arasında daha önemli olanları da öğrenmeye değer.
mkaito

@mkaito: Hedge kodunda özel değişken yok. Özel anlamlarını elde etmek için PATH ve PWD büyük harflerle yazılmalıdır.
jlliagre

Yanıtlar:


5

Çünkü değişiyorsun $PATHözel bir değişkendir. Kabuk yürütülebilir programları aramak için PATH kullanır. defaults muhtemelen bunlardan biridir, ancak klasörünü PATH'den çıkardıktan sonra, kabuk artık yürütemez.


3

Değiştirmek yerine yola ekleyin:

PATH=$PWD/Info:$PATH

Olmalı: PATH="$PWD/Info:$PATH" veya PATH="$PATH:$PWD/Info"
jlliagre

1
@jlliagre: Tırnaklara gerek yok. Sözcük bölme, ödevin sağ tarafında gerçekleştirilmez. Tırnaklara ihtiyacın olan tek zaman kelimenin tam anlamıyla özel karakterler ekliyor olman.
Dennis Williamson

1
Aslında, puanlarım daha fazla ayırıcıydı (iki nokta üst üste noktalı virgül yerine noktalı virgül kullandınız). Komutlar, standart olandan öncelikli olmak üzere özel olarak tasarlanmadıkça, bariz güvenlik nedenlerinden dolayı ilave bileşenlerin eklenmemesini, hazırlanmamasını tercih ederim.
jlliagre
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.