गैर-रूट उपयोगकर्ता के लिए निष्पादन योग्य का उपयोग करने का एक अच्छा तरीका क्या है जो सिस्टम की शेल की सूची में नहीं है जैसे कि वह उपयोगकर्ता का वास्तविक शेल था?
मैं इसे बैश के दो अलग-अलग संस्करणों के साथ करने की कोशिश कर रहा हूं। पुराना संस्करण वास्तविक शेल है। इसमें दिखाई देता है chsh -l
, हमेशा की तरह स्थित है /bin/bash
, और क्या व्यवस्था मेरे खोल को मानती है। मुझे अपने शेल के रूप में नया संस्करण चाहिए। मैंने इसे एक निर्देशिका में संकलित किया है। अभी मेरे अंदर यही है .bashrc
।
if [ $(echo $0) != $PATH_TO_NEW_SHELL_EXECUTABLE ]; then
export SHELL=$PATH_TO_NEW_SHELL_EXECUTABLE
exec "$SHELL" "$@"
fi
इसके साथ मुझे जो समस्या है वह यह है कि इस मशीन पर ssh के माध्यम से कमांड चलते हैं exec
लाइन। rsync
तथा scp
लटका भी। उदाहरण के लिए, निम्नलिखित लटका होगा।
ssh user@host false
मैं इस व्यवहार को नहीं समझता। अन्यथा, यह काम करता है। मैं भी ठीक एक इंटरैक्टिव ssh सत्र शुरू कर सकते हैं।
मैं इस विशिष्ट समस्या को कैसे हल कर सकता हूं और आम तौर पर एक ठीक से स्थापित शेल के अनुकरण के बारे में सबसे अच्छा तरीका क्या है?
exec
शेल कमांड इससे अलग तरीके से व्यवहार करता हैexec()
समारोह।